私は、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());
}
これは機能しますが、本当に正しいアプローチですか?