Sealyu

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 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)了問題,原來是配置EntityManager的時(shí)候出現(xiàn)了錯(cuò)誤:
          原來的配置: @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) 評論(4)  編輯  收藏 所屬分類: Seam

          評論

          # 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ù)  更多評論
            

          # 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由容器來管理,它的事務(wù)由JTA來管理,當(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),無狀態(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類型
          無狀態(tài)session bean每次調(diào)用都會(huì)創(chuàng)建新的持久化上下文,而有狀態(tài)session bean中,將持久化上下文的類型設(shè)置為EXTENDED類型后,在上下文的作用周期中,訪問對應(yīng)的方法才不會(huì)出錯(cuò)。  回復(fù)  更多評論
            

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

          # 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ù)  更多評論
            

          主站蜘蛛池模板: 永定县| 光山县| 山东| 巴林右旗| 嘉义县| 贺州市| 饶平县| 洞头县| 临夏市| 崇明县| 巧家县| 宜兰市| 洪湖市| 临桂县| 长寿区| 克拉玛依市| 宁远县| 合作市| 陆川县| 宣城市| 庐江县| 曲沃县| 保亭| 金堂县| 绥宁县| 弋阳县| 于都县| 农安县| 五峰| 夏邑县| 沙河市| 色达县| 二连浩特市| 富蕴县| 昭平县| 南溪县| 易门县| 江孜县| 夏河县| 芷江| 策勒县|