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);

显然,如果您在 parent 上设置了一个的ChildA,那么它将更新父表中的这个新 id。

于 2011-04-20T18:13:34.500 回答