您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联

Hibernate错误:org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联

我已经多次发生此错误,很难追踪…

基本上,hibernate是指您有两个具有相同标识符(相同主键)但不是相同对象的对象。

我建议您分解代码,即注释掉位,直到错误消失,然后再放回代码,直到返回为止,您应该找到错误

它通常是通过级联保存发生的,对象A和对象B之间有一个级联保存,但是对象B已经与该会话相关联,但是与对象A不在同一个实例B上。

您正在使用哪个主键生成器?

我问这个错误的原因与您如何告诉hibernate状态确定对象的持久状态(即对象是否持久)有关。该错误可能是由于hibernate试图持久化一个已经持久的对象而发生的。实际上,如果您使用保存,hibernate将尝试并持久化该对象,并且可能已经有一个对象具有与该会话关联的相同主键。

假设您有一个基于主键组合(表1和列2)的具有10行的表的hibernate类对象。现在,您已在某个时间从表中删除了5行。现在,如果您尝试再次添加相同的10行,而hibernate尝试将对象持久化到数据库中,则将添加5条已经删除的行而不会出现错误。现在,剩下的5行已经存在,将引发此异常。

因此,简单的方法是检查您是否已更新/删除了表中属于任何内容的任何值,以后又尝试再次插入相同的对象

其他 2022/1/1 18:13:46 有656人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶