1

我正在尝试在桌面应用程序上使用 ormlite 4.42 和 sqlite持久化一个惰性ForeignCollection 。

我有一个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.

我没有错误信息。我究竟做错了什么 ?

注意:我尝试了急切的收集(添加e2.getDates().updateAll()),但它也不起作用。

4

1 回答 1

1

也许这里缺少一个功能。现在,您需要在将事件添加到日期集合之前手动分配日期上的事件:

e2.getDates().clear();
for (final EventDate date : dates) {
    // this is necessary unfortunately
    date.setEvent(e2);
    e2.getDates().add(date);
}

我已添加以下票证以供审核:

https://sourceforge.net/p/ormlite/feature-requests/31/

于 2013-01-29T16:28:58.517 回答