Как сохранить ForeignCollection с ormlite 4.42?

Я пытаюсь сохранить ленивый 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 является нулевым: EventDates не связаны с Event,

У меня нет сообщения об ошибке. Что я делаю неправильно?

Примечание: я пытался с нетерпением коллекции (добавление e2.getDates().updateAll()) но это тоже не работает.

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/

Другие вопросы по тегам