经过一些研究,问题出在Hibernate中,它被称为bug#HHH-2862
这基本上是由一个渴望的集合引起的,其中集合的键在结果中不是唯一的。
当Hibernate使用’persistenceContext.addUninitializedCollection()’初始化集合时,这将检测到已经添加了具有给定键的集合,然后将旧实例设置为null并将当前实例设置为该集合。但是,该集合已经通过较早的调用添加到了持久性上下文中,并且当StatefulPersistenceContext.initializeNonLazyCollections()
在持久性上下文中迭代所有集合时,调用forceInitialization()
引用时会击中null引用,从而引发“集合不与任何会话相关联”异常“。这解释了为什么在我的情况下,只有最后一个对象具有引用,而只有一个具有一切正常,以及您对延迟初始化问题的假设。
一些想法如何绕过此错误?