Java學習

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

           

          解決a different object with the same identifier value was already associated with the session錯誤

          這個錯誤我一共遇到過兩次,一直沒有找到很好的解決方案,這個錯誤產生原因相信 大家都知道,因為在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()相比)感覺十分不爽。

          后來我還發現這種錯誤經常出現在一對多映射和多對多映射,請大家在使用一對多和多對多映射的時候要小心一些

          posted on 2008-11-28 16:10 找個美女做老婆 閱讀(357) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          本blog已經搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 溆浦县| 康乐县| 吉木萨尔县| 鄂托克前旗| 重庆市| 弥渡县| 肥城市| 荆门市| 高安市| 太保市| 兴安县| 香港| 射洪县| 芜湖市| 泽普县| 江源县| 平武县| 山丹县| 天津市| 桑植县| 岗巴县| 宁晋县| 金门县| 肇州县| 东山县| 晋城| 德州市| 奉节县| 莱西市| 新河县| 彭州市| 茌平县| 乌审旗| 绿春县| 龙口市| 双桥区| 兖州市| 长顺县| 吉木萨尔县| 涪陵区| 中卫市|