java - 如何使用 ormlite 4.42 持久保存foreignCollection?

标签 java sqlite ormlite foreign-collection

我正在努力坚持懒惰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);
}

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

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

关于java - 如何使用 ormlite 4.42 持久保存foreignCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513366/

相关文章:

java - 手动实现 Oauth2 授权代码授予流程

java - 在firebase中更新数据时如何更新 TextView

python - 提高循环效率

ios - 如何在 sqlite iOS 中查找现有文件夹名称

java - ORMLite 外国 Collection

java - 将运算符从 double 转换回 char 后,如何使用它?

c# - Java套接字服务器,C#套接字客户端,通信问题?

python - Django 日期时间字段(带有 sqlite 数据库)返回 unicode

android - 使用 ORMLite 时构造函数出错

java - 日历 .YEAR、.MONTH、DAY_OF_MONTH 与 date.getDay() 等不同?