[转]解决a different object with the same identifier value was already associated with the session错误

NonUniqueObjectException

解决a different object with the same identifier value was already associated
with the session错误

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.sai.restaurant.po.TSdRestaurant#8]

这个错误我一共遇到过两次,一直没有找到很好的解决方案,这个错误产生

原因相信大家都知道,因为在hibernate中同一个session里面有了两个相同标识


但是是不同实体,当这时运行saveOrUpdate(object)操作的时候就会报这个错误。

呵呵,也许你会说,你这么说跟没说没什么区别,我承认,呵呵,我不知道具体

为什么会产生这个错误,要不然也不会很久都没有解决,现在,给出一个临时的

解决方案,给向我一样,没有办法找到根源的人一个能够继续执行下去的方法

(当然是对的,只是不是从产生原因入手)

其实要解决这个问题很简单,只需要进行session.clean()操作就可以解决

了,但是你在clean操作后面又进行了saveOrUpdate(object)操作,有可能

会报出"Found
two representations of same
collection",我找了很多资料,

没有什么很好的解释,其中这篇文章帮助最大

http://opensource.atlassian.com/projects/hibernate/browse/HHH-509

最后通过session.refresh(object)方法就可以解决了,注意,当object不

是数据库中已有数据的对象的时候,不能使用session.refresh(object)因

为refresh是从hibernate的session中去重新取object,如果session中没

有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判

断一下

当然这个问题最容易解决的办法还是使用Hibernate里面自带的merge()

方法。不过我始终觉得碰到问题就用这种软件自带的非常用方法

(和saveOrUpdate(),save(),update()相比)感觉十分不爽。

后来我还发现这种错误经常出现在一对多映射和多对多映射,请大家在

使用一对多和多对多映射的时候要小心一些

Hibernate 疑难异常及处理

1、a different object
with the same identifier value was already associated with the
session。

  错误原因:在hibernate中同一个session里面有了两个相同标识但是是不同实体。

  解决方法一:session.clean()

  PS:如果在clean操作后面又进行了saveOrUpdate(object)等改变数据状态的操作,有可能会报出"Found
two representations of same collection"异常。

  解决方法二:session.refresh(object)

  PS:当object不是数据库中已有数据的对象的时候,不能使用session.refresh(object)因为该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。

  解决方法三:session.merge(object)

  PS:Hibernate里面自带的方法,推荐使用。

2、Found two representations of same
collection

  错误原因:见1。

  解决方法:session.merge(object)

以上两中异常经常出现在一对多映射和多对多映射中

[转]解决a different object with the same identifier value was
already associated with the session错误,布布扣,bubuko.com

[转]解决a different object with the same identifier value was
already associated with the session错误

时间: 2024-10-17 08:42:13

[转]解决a different object with the same identifier value was already associated with the session错误的相关文章

解决a different object with the same identifier value was already associated with the session错误

20:41:15 今天做一个saveorupdate操作报错: org.springframework.orm.hibernate3.HibernateSystemException: a different object with the same identifier value was already associated with the session: [com.xshcar.carcloud.entity.UboxTbl#1291]; nested exception is org

hibernate中一种导致a different object with the same identifier value was already associated with the session错误方式及解决方法

先将自己出现错误的全部代码都贴出来: hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-con

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session异常解决办法

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session异常解决办法 为什么还会说已经存在相同的session了呢.然后每次将项目重启后第一次编辑的时候问题不会触发,只有当第二次操作的时候才会出现这个问题. 解决办法:关闭session.好好检查操作完成后有没有关闭会话. org.hibernat

a different object with the same identifier value was already associated with the session

错误提示: org.springframework.dao.DuplicateKeyException: a different object with the same identifier value was already associated with the session: [cn.itcast.bos.domain.User#4]; nested exception is org.hibernate.NonUniqueObjectException: a different obj

利用struts进行前端页面间传值及hibernate异常:a different object with the same identifier value was already associated with the session的总结

2017-3-16 我使用SSH框架在做单表CRUD的更新操作时遇到了一个问题,就是页面间该怎么传值?解决该需求时引发了一系列的bug,趁还记得好好总结一番. 前端页面间传值 情景:在我查出所以记录后,点击修改会链接到新的修改页面. 问题:该新页面没有之前的实体信息,该如何传递要修改的实体信息给该页面,例如id? 思路1:利用struts的action来传值. 1 <form action="deleteSerCate.action" method="post"

Hibernate更新数据报错:a different object with the same identifier value was already associated with the session: [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001]

使用hibernate更新数据时,报错 Struts has detected an unhandled exception: Messages: a different object with the same identifier value was already associated with the session: [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001] a different object w

org.hibernate.TransientObjectException:The given object has a null identifier

1.错误描述 org.hibernate.TransientObjectException:The given object has a null identifier:com.you.model.UserInfo 2.错误原因 3.解决办法

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread---------程序报错

今天遇到了这个问题: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:-- 找其原因是因为同一个object,如一个person在seession里保存了一份,而增加的别的object,如company的时候,由于做了关联关系,从数据库里又get了一个person,而这个person和s

The given object has a null identifier解决之法

<input type="hidden" name="memberPermission.id"????????????value="${memberpermission.id}"> <input type="hidden"????????????name="memberPermission.mtid" value="${memberpermission.mtid}"&g