Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
          今天碰到一個問題,在顯示實體的集合屬性的時候竟然報錯:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role。記得在看seam preference的時候,里面提到seam已經解決了hibernage的這個痼疾,所以感覺很奇怪。在研究了代碼并google之后,終于發現了問題,原來是配置EntityManager的時候出現了錯誤:
          原來的配置: @PersistenceContext(unitName="default")     EntityManager mgr;
          修改后: @PersistenceContext(type=PersistenceContextType.EXTENDED,unitName="default")     EntityManager mgr;

          錯誤原因,有位仁兄解釋的很清楚,附原帖:http://www.seamframework.org/Community/HowToAvoidLazyInitializationException


          posted on 2009-03-11 11:56 seal 閱讀(4334) 評論(4)  編輯  收藏 所屬分類: Seam

          評論

          # re: Seam 錯誤:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role 2009-04-13 14:51 gembin
          PersistenceContextType.EXTENDED, This only applies to stateful session beans?  回復  更多評論
            

          # re: Seam 錯誤:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role 2009-04-13 15:31 seal
          gembin你好:
          這個是只用于stateful session bean的。

          在容器中,EntityManager由容器來管理,它的事務由JTA來管理,當調用EntityManager時,容器首先檢查是否處在持久化上下文中。

          若是,則EntityManager將使用該持久化上下文和其關聯的事務;

          若沒有關聯任何持久化上下文,則創建一個新的持久化上下文,并將EntityManager與所在的事務關聯。

          容器托管的EntityManager的持久化上下文的作用范圍有兩種:
          (1)transaction類型
          默認,無狀態的session bean都是以事務為單位的。
          有狀態 session bean在默認情況下使用的是以一個事務為單位的持久化上下文。bean中的一個方法即為一個事務。-----即一個方法即為一個持久化上下文的作用范圍。
          一般事務的方法內建立持久化上下文,事務結束,持久化上下文也就結束。

          (2)extended類型
          無狀態session bean每次調用都會創建新的持久化上下文,而有狀態session bean中,將持久化上下文的類型設置為EXTENDED類型后,在上下文的作用周期中,訪問對應的方法才不會出錯。  回復  更多評論
            

          # re: Seam 錯誤:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role 2009-04-13 15:35 seal
          有位仁兄已經翻了一篇帖子,我轉過來了, 帖子詳細介紹了seam中entitymanager的使用:
          http://www.aygfsteel.com/sealyu/archive/2009/04/13/265298.html
          你可以看看  回復  更多評論
            

          # re: Seam 錯誤:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role 2011-05-02 21:12 gu
          這個網址講的很詳細
          http://www.01yun.com/jssx/java/jdbc/20110419/1417.html  回復  更多評論
            

          主站蜘蛛池模板: 河津市| 丹江口市| 北流市| 于都县| 巴林右旗| 博客| 新闻| 三台县| 承德市| 禹城市| 泽普县| 杭锦后旗| 海口市| 营山县| 盈江县| 湄潭县| 嘉禾县| 平果县| 龙口市| 文成县| 宁城县| 台中县| 乌兰县| 舟曲县| 韶关市| 锡林郭勒盟| 桂阳县| 新乐市| 乐业县| 辛集市| 南郑县| 平度市| 久治县| 永兴县| 苗栗市| 温州市| 永定县| 百色市| 营山县| 哈密市| 搜索|