0

リレーションシップを介してフェッチすると、永続オブジェクトが一時オブジェクトを返すのはなぜですか?

ObjectContext context = BaseContext.getThreadObjectContext();

// Delete some employee schedules
List<EmployeeSchedule> employeeSchedules = this.getEmployeeSchedules();
for (EmployeeSchedule employeeSchedule : employeeSchedules) {
  context.deleteObject(employeeSchedule);
}

// Add new schedules
for(int i = 0; i < someCondition; i++) {
   EmployeeSchedule employeeSchedule = context.newObject(EmployeeSchedule.class);
   addToEmployeeSchedules(employeeSchedule);
}

context.commitChanges();

List<EmployeeSchedule> es = getEmployeeSchedules();  // returns transient objects

データベースにデータを正しく挿入しています。これは、キャッシュ内の古いデータの問題でしょうか?

4

1 に答える 1

0

将来、他の誰かがこれにつまずいた場合に備えて、私は自分の質問に答えています。

私は多対多の関係を持っています。Employee - EmployeeSchedule - スケジュール

http://cayenne.apache.org/docs/3.0/delete-rules.htmlの削除ルールに従って、EmployeeSchedule のフィールド employee_id と schedule_id を削除時に Nullify ルールに設定しました。

また、Modeler で employee_id と schedule_id の主キーを作成し、employee と schedule dbEntity の「to Dep PK」チェックボックスをオンにして、結合テーブル EmployeeSchedule を構成する必要がありました。

関連リンク: http://objectstyle.org/cayenne/lists/cayenne-user/2004/02/0017.html http://grokbase.com/t/cayenne/user/085d70sysk/to-dep-checkbox-was-一対多の問題

于 2013-05-24T21:53:49.497 に答える