码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-16 08:13:40      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

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错误

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/mjorcen/p/3783750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!