1

私は、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());
    }

これは機能しますが、本当に正しいアプローチですか?

4

0 に答える 0