如何使用ormlite 4.42保留ForeignCollection?

时间:2013-01-25 00:28:08

标签: java sqlite ormlite foreign-collection

我正在尝试在桌面应用程序中使用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();

{1}}已在sqlite表中正确添加,但字段EvenDates为空:event_id未与EventDates相关联。

我没有错误消息。 我做错了什么?

注意:我尝试过eager collection(添加Event),但它也不起作用。

1 个答案:

答案 0 :(得分: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/