Java Hibernate刷新/提交集合所有者与会话不关联

Java Hibernate刷新/提交集合所有者与会话不关联,java,database,hibernate,Java,Database,Hibernate,在我们的代码中,我们有一个多对多关系,其中关系表还包含一些附加字段 例如: 我们有资源之旅,一次旅行可以有多个设备,设备可以重复使用。当设备不再使用时,会将其移除。因此,我们有以下对象: 旅行 设备还包含另一个包含数据的列表,我称之为轮子 三设备关系 在旅途中更换设备时,我们首先 删除设备和TripEquipmentRelation之间的关系 删除跳闸和TripEquipmentRelation之间的关系 删除TripEquipmentRelation 因为设备不再使用,我们也移除了设备本身。

在我们的代码中,我们有一个多对多关系,其中关系表还包含一些附加字段

例如: 我们有资源之旅,一次旅行可以有多个设备,设备可以重复使用。当设备不再使用时,会将其移除。因此,我们有以下对象:

旅行 设备还包含另一个包含数据的列表,我称之为轮子 三设备关系 在旅途中更换设备时,我们首先

删除设备和TripEquipmentRelation之间的关系 删除跳闸和TripEquipmentRelation之间的关系 删除TripEquipmentRelation 因为设备不再使用,我们也移除了设备本身。 为行程添加新设备。 添加这一点,我们在会话上执行手动刷新,因为我们需要从新对象生成id。到现在为止,一直都还不错。但是,当应用程序服务器尝试提交会话时,会出现以下错误:

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)
即使wheels集合为空

删除刷新时,保存操作成功。有人能解释一下为什么手动刷新会话不起作用吗


Thx提前

我想如果您在添加控制盘之前刷新设备或it实体的父实体-在刷新之前,那么即使刷新也应该可以工作。Save将把整个树视为新树并保存。Flush将寻找保存新更改的方法。因此,对象需要处于“托管”状态。让我知道它是否有效。嗨,谢谢你的反应。奇怪的是,异常是在移除的设备上抛出的,而不是在添加的设备上抛出的。新形势和旧形势都不一样。但我会在移除父对象后尝试刷新该对象。我会让你知道,在添加新设备之前刷新行程似乎并不能解决我的问题。它会导致StaleObjectException。