4

データベースに保存している最上位要素があり、次のようないくつかの外部要素があります。

@DatabaseTable
public class Parent {
    @DatabaseField(id = true, index = true)
    public Integer id;

    @DatabaseField(foreign = true)
    public ChildA a;
}

@DatabaseTable
public class ChildA {
    DatabaseField(generatedId = true, index = true)
    public Integer id;

    @DatabaseField
    public boolean something;
}

これらがデータベースにすでに作成されていると仮定します。そして今、それらを更新したいと思います。呼び出しparentDao.update(parent)は両方を更新しますか? または、子も手動で更新する必要がありますか?

4

1 に答える 1

7

簡単な答えは次のとおりです。

いいえ、両方は更新されません

外部オブジェクトはプロキシ オブジェクトではないため、サブオブジェクトが変更されて更新が必要かどうかを ORMLite が判断する方法はありません。したがって、ParentChildAオブジェクトの両方を変更する場合は、次のようにする必要があります。

 childADao.update(parent.a);
 parentDao.update(parent);

明らかに、親に新しいChildA を設定すると、親テーブルでこの新しい ID が更新されます。

于 2011-04-20T18:13:34.500 に答える