posts - 40,  comments - 187,  trackbacks - 0

          開發(fā)環(huán)境:
          Struts 1.2 + Spring 1.2.8 + Hibernate 3.2

          遇到的問題:
          org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
          ?at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60)
          ?at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
          ?at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:172)
          ?at com.zhjy.gea.module.affair.domain.Affair$$EnhancerByCGLIB$$e10be950.getAffairCatalogs(<generated>)
          ?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          ?at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          ?at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          ?at java.lang.reflect.Method.invoke(Method.java:585)
          ?at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2049)
          ?at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1286)
          ?at org.apache.commons.beanutils.BeanUtilsBean.copyProperties(BeanUtilsBean.java:284)
          ?at org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:137)

          分析原因:
          由于Spring控制的Hibernate的生命周期只針對(duì)數(shù)據(jù)層和服務(wù)層,而未管理到表現(xiàn)層,所以會(huì)出現(xiàn)the owning Session was closed的現(xiàn)象。針對(duì)這一點(diǎn),我通過hibernate filter的方式來解決。

          解決方法:
          在web.xml中配置filter來解決。

          <!-- ?hibernate?session?filter? -->
          ?
          < filter >
          ??
          < filter-name > hibernateFilter </ filter-name >
          ??
          < filter-class > ???org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
          ??
          </ filter-class >
          ?
          </ filter >

          < filter-mapping >
          ??
          < filter-name > hibernateFilter </ filter-name >
          ??
          < url-pattern > *.do </ url-pattern >
          ?
          </ filter-mapping >


          記于此處,望遇到同樣問題的朋友,少走彎路。:)

          ??????????????????????????????????????????????????????????????????? THE END
          posted on 2007-07-23 18:31 小立飛刀 閱讀(4376) 評(píng)論(3)  編輯  收藏 所屬分類: Hibernate

          FeedBack:
          # re: Hibernate不聽話了-- could not initialize proxy - the owning Session was closed
          2007-07-24 15:14 | 一條老狗
          另外,也可以在Service 或者 dao 層把lazy的Hibernate.initialize強(qiáng)制加載它。這樣在視圖層就不會(huì)出現(xiàn)session已關(guān)閉的錯(cuò)誤了。
          當(dāng)然,這樣似乎lazy就沒有意義了。
          視具體情況而定吧。

            回復(fù)  更多評(píng)論
            
          # re: Hibernate不聽話了-- could not initialize proxy - the owning Session was closed
          2007-07-24 15:25 | 小雪飛刀
          @一條老狗
          您說的情況比如在編輯頁面里面lazy=true,而在瀏覽頁面lazy=false,這樣可以在需要lazy的地方才進(jìn)行控制。但是配置文件中Lazy屬性是控制全局的。這時(shí)就需要用到Hibernate.initialize(Object proxy) 方法。
          在配置文件里面可以用lazy=true,在程序里面可以用強(qiáng)制加載的方法Hibernate.initialize(Object proxy) 方法強(qiáng)制加載這樣就相當(dāng)于動(dòng)態(tài)改變?yōu)閘azy=false。
          但有一點(diǎn)需要注意的是,proxy是持久對(duì)象的關(guān)聯(lián)對(duì)象屬性,如要把實(shí)體A的關(guān)聯(lián)實(shí)體B也取出時(shí),就要寫Hibernate.initialize(a.b)。  回復(fù)  更多評(píng)論
            
          # re: Hibernate不聽話了-- could not initialize proxy - the owning Session was closed
          2007-07-24 18:05 | 一條老狗
          lazy 不是全局的,可以單個(gè)配置。  回復(fù)  更多評(píng)論
            
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          生存或毀滅,這是個(gè)必答之問題:是否應(yīng)默默的忍受坎苛命運(yùn)之無情打擊,還是應(yīng)與深如大海之無涯苦難奮然為敵,并將其克服。此二抉擇,究竟是哪個(gè)較崇高?

          常用鏈接

          留言簿(12)

          隨筆分類(43)

          相冊

          收藏夾(7)

          朋友的博客

          電子資料

          搜索

          •  

          積分與排名

          • 積分 - 302889
          • 排名 - 192

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 蒙山县| 南昌市| 军事| 库车县| 吴旗县| 林周县| 安龙县| 莆田市| 上思县| 和政县| 英超| 中山市| 清新县| 绥棱县| 容城县| 安化县| 红安县| 四川省| 乐业县| 昆明市| 黄石市| 吉水县| 微博| 台中县| 雅安市| 嵊州市| 黄陵县| 民权县| 湾仔区| 遂宁市| 手机| 紫金县| 额济纳旗| 金堂县| 迁安市| 大庆市| 汤阴县| 永福县| 麻栗坡县| 西贡区| 河西区|