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

原因相信大家都知道,因为在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错误的更多相关文章

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

    1.a different object with the same identifier value was already associated with the session. 错误原因:在h ...

  2. 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"?> ...

  3. 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 thesession时,一般是因为在h ...

  4. 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 alread ...

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

    hibernate操作: 实例化两个model类,更新时会提示  a different object with the same identifier value was already assoc ...

  6. Hibernate Error: a different object with the same identifier value was already associated with the session

    在执行Hibernate的Update操作时,报错:a different object with the same identifier value was already associated w ...

  7. a different object with the same identifier value was already associated with the session解决方案

    org.springframework.orm.hibernate3.HibernateSystemException: a different ]; nested exception ] at or ...

  8. Exception 06 : 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 ...

  9. org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:

    保存实体异常 https://blog.csdn.net/zzzz3621/article/details/9776539 org.hibernate.NonUniqueObjectException ...

随机推荐

  1. xls数据导入sqlite数据库

      protected void btn_ok_Click(object sender, EventArgs e)     {         try         {             st ...

  2. What is the difference between differed processing mode and interactive mode?

     Every time you access and navigate through the fields on a page in PeopleSoft there are events such ...

  3. SQL SERVER 2008 R2 还原数据库3154错误

    1.SQL SERVER 2008 在还原数据库时,会报错. 提示错误:"备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异常终止. (Micro ...

  4. c#学习之Socket网络编程

    我是新手以前没写过博客 希望大家勿喷, 在编写Socket的时候需要导入System.Net.Socket 命名空间.利用该类我们可以直接编写Socket的客户端和服务的的程序了, 这里我们只讲tpc ...

  5. Silverlight中动画的性能浅析

    Silverlight中提供了StoryBoard实现动画,可是StoryBoard的性能实在不敢恭维,特别是动画很大的时候,计算机的CPU和内存的狂增,如此一来性能实在太差,在默认的动画效果中动画实 ...

  6. Silverlight DataGrid数据行背景颜色控制

    sdk:DataGrid数据绑定后,部分特殊的行需要用不同的背景颜色来显示.(注册DataGrid的LoadingRow事件) private void radGridView_LoadingRow( ...

  7. 二、MongoDB的基础知识简介

    1.文档.集合和数据库 a).文档:因为MongoDB是面向文档的数据库,那么可想而知文档是它的基本单元,相当于关系型数据库中的行! Ⅰ.它是由键值对组成的一个有序集:注:键不能为空且是字符串类型的. ...

  8. wordpress学习-themes-001

    这一篇主要是来记录wordpress theme的内容.关于为什么要自己编写wordpress theme的理由,相信大家都有各自的体会.想让自己的博客变的更加突出?更加个性话?wordpress t ...

  9. VLC 重新编译第三方库的预编译包contrib

    VLC的引用了很多开源的第三方库,均放到VLC目录下的contrib中(本来开始编译是2.1.x以上版本,以前或以后可能会变化),在Windows版本编译中,contrib文件夹中仅仅下载VLC官网上 ...

  10. PHP中英文字符串截取函数无乱码(mb_substr)和获取中英文字符串字数函数(mb_strlen)

    mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encod ...