首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Hibernate错误:具有相同标识符值的不同对象已与该会话关联

Hibernate错误:具有相同标识符值的不同对象已与该会话关联
EN

Stack Overflow用户
提问于 2013-04-27 07:35:36
回答 25查看 326.8K关注 0票数 102

我基本上在这个配置中有一些对象(实际的数据模型稍微复杂一点):

类别A与B具有多对多关系。(B与inverse="true")

  • B具有多对一关系。(我将cascade设置为"save-update")

  • C是一种类型/类别表。

另外,我可能应该提一下,主键是由数据库在保存时生成的。

对于我的数据,我有时会遇到这样的问题: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的空白对象插入数据库。很明显,这不是我们想要的。

编辑我忘记提到的另一件事是(由于我无法控制的架构原因),每次读或写都需要在单独的会话中完成。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16246675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档