Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORMLite外部成员更新_Java_Android_Ormlite - Fatal编程技术网

Java ORMLite外部成员更新

Java ORMLite外部成员更新,java,android,ormlite,Java,Android,Ormlite,我有一个保存到数据库的顶级元素,它有几个外来元素,类似这样: @DatabaseTable public class Parent { @DatabaseField(id = true, index = true) public Integer id; @DatabaseField(foreign = true) public ChildA a; } @DatabaseTable public class ChildA { DatabaseField(

我有一个保存到数据库的顶级元素,它有几个外来元素,类似这样:

@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)
会同时更新两者吗?或者我也需要手动更新孩子吗?

简短的回答是:

不,它不会同时更新两者

外来对象不是代理对象,因此ORMLite无法确定子对象是否已修改且需要更新。因此,如果同时更改
Parent
ChildA
对象,则必须执行以下操作:

 childADao.update(parent.a);
 parentDao.update(parent);
显然,如果您在父表上设置了一个新的ChildA,那么它将更新父表中的这个新id