Sealyu

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

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

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


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

          評(píng)論

          # re: Seam 錯(cuò)誤: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?  回復(fù)  更多評(píng)論
            

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

          在容器中,EntityManager由容器來(lái)管理,它的事務(wù)由JTA來(lái)管理,當(dāng)調(diào)用EntityManager時(shí),容器首先檢查是否處在持久化上下文中。

          若是,則EntityManager將使用該持久化上下文和其關(guān)聯(lián)的事務(wù);

          若沒有關(guān)聯(lián)任何持久化上下文,則創(chuàng)建一個(gè)新的持久化上下文,并將EntityManager與所在的事務(wù)關(guān)聯(lián)。

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

          (2)extended類型
          無(wú)狀態(tài)session bean每次調(diào)用都會(huì)創(chuàng)建新的持久化上下文,而有狀態(tài)session bean中,將持久化上下文的類型設(shè)置為EXTENDED類型后,在上下文的作用周期中,訪問對(duì)應(yīng)的方法才不會(huì)出錯(cuò)。  回復(fù)  更多評(píng)論
            

          # re: Seam 錯(cuò)誤:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role 2009-04-13 15:35 seal
          有位仁兄已經(jīng)翻了一篇帖子,我轉(zhuǎn)過來(lái)了, 帖子詳細(xì)介紹了seam中entitymanager的使用:
          http://www.aygfsteel.com/sealyu/archive/2009/04/13/265298.html
          你可以看看  回復(fù)  更多評(píng)論
            

          # re: Seam 錯(cuò)誤:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role 2011-05-02 21:12 gu
          這個(gè)網(wǎng)址講的很詳細(xì)
          http://www.01yun.com/jssx/java/jdbc/20110419/1417.html  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 安仁县| 叙永县| 汕尾市| 缙云县| 鸡泽县| 涟源市| 南皮县| 喜德县| 达孜县| 若羌县| 高唐县| 南郑县| 松桃| 库车县| 岚皋县| 德庆县| 崇礼县| 延川县| 巴中市| 东海县| 柘荣县| 镶黄旗| 满城县| 佳木斯市| 富裕县| 新河县| 江门市| 陈巴尔虎旗| 昌乐县| 双城市| 美姑县| 芮城县| 红原县| 鹿泉市| 乐清市| 祁东县| 株洲县| 安陆市| 六盘水市| 峨边| 北川|