1

デスクトップアプリケーションでormlite4.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();

EvenDatessqliteテーブルに正しく追加されていますが、フィールド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 に答える