我在开发 Android 应用程序和一般使用数据库方面有点菜鸟,所以请记住这一点。
设置:我正在构建一个从服务器接收jsondata的应用程序,用gson解析,制作成greendao生成的类的对象,然后插入数据库。
我的问题:插入的对象没有任何本地链接层次结构。目前,父 id 仍然存储在对象中,因此可以通过手动遍历所有对象来设置。我的方法如下所示:
//Relevant part of the generator file
user = schema.addEntity("User");
user.addIdProperty().autoincrement();
user.addLongProperty("serverId");
area = schema.addEntity("Area");
area.addIdProperty().autoincrement();
userLinkId = area.addLongProperty("_parent").getProperty();
area.addLongProperty("serverId");
area.addLongProperty("serverParentId");
area.addToOne(user, userLinkId);
user.addToMany(area, userLinkId);
//Relevant part of the datainsertion
SyncObject theobject = gson.fromJson(jo.getAsJsonObject("new"),SyncObject.class);
app.getSession().getAreaDao().insertInTx(theobject.areas);
QueryBuilder<User> qbu = app.getSession().getUserDao().queryBuilder();
List<Area> areas = qba.list();
for (Area a : areas) {
Long userServerId = a.getServerParentId();
List<User> users = qbu.where(UserDao.Properties.ServerId.eq(userServerId)).list();
a.set_parent(user.getId());
}
这行得通,但它真的是正确的方法吗?