我基本上在这个配置中有一些对象(实际的数据模型稍微复杂一点):
类别A与B具有多对多关系。(B与inverse="true"
)
cascade
设置为"save-update"
)
另外,我可能应该提一下,主键是由数据库在保存时生成的。
对于我的数据,我有时会遇到这样的问题:A有一组不同的B对象,而这些B对象引用相同的C对象。
当我调用session.saveOrUpdate(myAObject)
时,我得到一个hibernate错误:"a different object with the same identifier value was already associated with the session: C"
。我知道hibernate不能在同一个会话中两次插入/更新/删除同一个对象,但是有什么方法可以解决这个问题吗?这看起来并不是什么不常见的情况。
在我研究这个问题的过程中,我看到有人建议使用session.merge()
,但当我这样做时,任何“冲突”的对象都会作为所有值都设置为null的空白对象插入数据库。很明显,这不是我们想要的。
编辑我忘记提到的另一件事是(由于我无法控制的架构原因),每次读或写都需要在单独的会话中完成。
https://stackoverflow.com/questions/16246675
复制相似问题