我確保幾次閱讀有關此主題的文檔,但似乎無法將其包圍。我有一個名爲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);
不幸的是,這一次把我約我怎麼能不更新的字段是國外收藏例外。
我在做什麼錯?