Как сохранить 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);
}
Я добавил следующий билет для проверки: