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

我正在回答我自己的问题,以防其他人在未来被此绊倒。

我有一个多对多的关系。员工 - EmployeeSchedule - 时间表

根据此处的删除规则:http: //cayenne.apache.org/docs/3.0/delete-rules.html,我将EmployeeSchedule中的字段employee_id和schedule_id设置为删除时的Nullify规则。

我还必须通过在Modeler 中设置employee_id 和schedule_id 主键并选中员工和调度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 回答