空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          這個錯誤我一共遇到過兩次,一直沒有找到很好的解決方案,這個錯誤產生

          原因相信大家都知道,因為在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)

          以上兩中異常經常出現在一對多映射和多對多映射中

          posted on 2008-10-30 10:35 蘆葦 閱讀(5281) 評論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 玉林市| 荣成市| 弥渡县| 邹平县| 台中县| 仁寿县| 杭州市| 惠水县| 连南| 彰化县| 石棉县| 临夏市| 平安县| 天柱县| 乌鲁木齐市| 黄浦区| 汾阳市| 乐陵市| 安乡县| 大洼县| 扎赉特旗| 镇远县| 政和县| 轮台县| 文昌市| 抚松县| 象州县| 阳城县| 增城市| 东丽区| 永福县| 岢岚县| 会理县| 上高县| 齐河县| 茌平县| 许昌市| 台前县| 老河口市| 蓬安县| 大英县|