我正在努力坚持懒惰ForeignCollection在桌面应用程序上使用 ormlite 4.42 和 sqlite。
我有一个 Event
类,其中包含 EventDate
的集合:
@DatabaseTable(tableName = "event")
public class Event extends BaseDaoEnabled<Event, Integer> implements Scrap {
@DatabaseField(generatedId = true, columnName = "_id")
private int id;
@ForeignCollectionField(eager = true)
private ForeignCollection<EventDate> dates;
}
EventDate
类是:
@DatabaseTable(tableName = "eventdate")
public class EventDate extends BaseDaoEnabled<EventDate, Integer> {
@DatabaseField(generatedId = true, columnName = "_id")
int id;
@DatabaseField(canBeNull = true, foreign = true)
Event event;
}
这是我用来添加 EventDates
并保留它们的代码:
Event e2 = eventDao.queryForId(id));
e2.getDates().clear();
for (final EventDate date : dates) {
e2.getDates().add(date);
e2.getDates().update(date);
}
e2.update();
EvenDates
已正确添加到 sqlite 表中,但字段 event_id
为 null:EventDates
未链接到 Event
。
我没有任何错误消息。 我做错了什么?
注意:我尝试使用 eager collection(添加 e2.getDates().updateAll()
),但它也不起作用。
最佳答案
也许这里缺少一个功能。现在,您需要在将事件添加到日期集合之前手动分配日期上的事件:
e2.getDates().clear();
for (final EventDate date : dates) {
// this is necessary unfortunately
date.setEvent(e2);
e2.getDates().add(date);
}
我添加了以下票证以供审核:
关于java - 如何使用 ormlite 4.42 持久保存foreignCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513366/