我确保几次阅读有关此主题的文档,但似乎无法将其包围。我有一个名为Home
的模型,其ForeignCollection
的Person
。使用ForeignCollections更新和刷新实体时发生ORMLite问题
Home.class
:
public class Home implements Serializable{
@DatabaseField(id = true, canBeNull = false, columnName = "id")
private long id;
@ForeignCollectionField(eager = true, maxEagerLevel = 2)
private Collection<Person> persons = new ArrayList<>();
//constructors, getters, and setters...
}
Person.class
:
public class Person {
@DatabaseField(id=true, canBeNull = false, columnName = "id")
private long id;
@DatabaseField(foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
private Home home;
//constructors getters setters and other properties that are not important for this question
}
现在,经过最初值插入我的Home
和Person
模型,我能有什么,看起来像这样:
Home对象:
{
"id" : 1,
"persons" : [{"id" : 1}, {"id" : 2}, {"id" : 3}]
}
现在我不想从Person
模型更新persons
字段的内容。我只想更新Home
对象的persons
字段。
我已经试过如下:
home.setPersons(newArrayOfPersons); //this array is the same array except I removed one element.
homeDao.update(home);
上面的代码没有抛出任何错误,但它似乎没有要更新我的SQLite数据库。
然后我试图使用UpdateBuilder
:
UpdateBuilder<Home, Long> updateBuilder = homeDao.updateBuilder();
updateBuilder.where().eq("id", home.getId());
updateBuilder.updateColumnValue("persons", newArrayOfPersons);
updateBuilder.update();
homeDao.refresh(home);
不幸的是,这一次把我约我怎么能不更新的字段是国外收藏例外。
我在做什么错?