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 閱讀(4347) 評論(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  回復  更多評論
            

          主站蜘蛛池模板: 明水县| 万荣县| 崇仁县| 秭归县| 铜鼓县| 黎城县| 邳州市| 淅川县| 合江县| 盐边县| 隆子县| 铜川市| 西城区| 北京市| 噶尔县| 沐川县| 沾益县| 菏泽市| 巢湖市| 额敏县| 白沙| 乐至县| 兴化市| 新建县| 巴马| 上杭县| 乌苏市| 宁阳县| 石景山区| 安龙县| 江山市| 左贡县| 罗源县| 驻马店市| 元氏县| 五寨县| 五常市| 蒙阴县| 泰顺县| 上蔡县| 蓬溪县|