Hibernate刷新/提交集合所有者与会话无关

时间:2014-12-16 08:32:55

标签: java database hibernate

在我们的代码中,我们有多对多的关系,其中关系表还包含一些额外的字段。

例如: 我们有旅行资源,旅行可以有多个设备和设备可以重复使用。当设备不再使用时,它将被移除。所以我们有以下对象:

  • 旅行
  • 设备(设备还包含另一个包含数据的列表,我称之为车轮)
  • TripEquipmentRelation

在旅行中更换设备时我们首先

  • 删除Equipment和TripEquipmentRelation之间的关系
  • 删除Trip和TripEquipmentRelation之间的关系
  • 删除TripEquipmentRelation
  • 由于设备不再使用,我们也会自行拆除设备。
  • 为旅途添加新设备。

添加这一点我们在会话上进行手动刷新,因为我们需要来自新对象的生成ID。到现在为止还挺好。但是当applicationServer尝试提交会话时,我们会收到以下错误:

AssertionFail E org.hibernate.AssertionFailure <init> an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
org.hibernate.AssertionFailure: collection owner not associated with session Equipment.wheels
at org.hibernate.engine.Collections.processDereferencedCollection(Collections.java:88)
at org.hibernate.engine.Collections.processUnreachableCollection(Collections.java:39)

即使车轮收集是空的。

删除flush时,保存操作成功。有人可以向我解释为什么手动刷新会话不起作用吗?

提前谢谢

0 个答案:

没有答案