隨筆-7  評論-24  文章-102  trackbacks-0

          1:主要說的是問題出在CGLib上面,修正一下就可以了,下載中也給出了patch,使用hibernate3.1把cglib從2.1.3更新到2.2.beta1。
          2:設置相關表的lazy="false"解決問題。

          總的來說是延遲加載,在寫測試類的時候沒問題,但是應用到 web 頁面就會出錯。或者升級下 Hibernate 版本能修正這個錯誤。



          相關: 淺談hibernate lazy fetch

          1、fetch 的優先級高于 lazy,一般情況下(另外一般情況下除外,下篇會講到)fetch的優先級高于 lazy,若出現了 fetch,則忽略 lazy。

          2、在配置文件中多對一時,一定要明確聲明 lazy=false 或 true,在多對一時,默認情況下,lazy 即不是 true 也不是 false。你若不明確指出,它執行的時候是按照 lazy=true 這種方式執行的,但是你若明確寫上 lazy=true,指報出錯誤,一般情況下明確寫上 lazy=false。

          3、你的代碼若像 Student student = (Student)session.get(Student.class, 1),hibernate 會正確按照配置文件的策略來執行,有 fetch 則執行fetch,有 lazy 則執行 lazy;但你的代碼若像 Query query = session.createQuery("from Student"),它會忽略配置文件中的 fetch,它不會執行  fetch=join,lazy 會被正確執行,Student 的屬性(這里假定是Team,它是對象)的配置文件中的 fetch 會被正確執行。

          4、Query query = session.createQuery("from Student s left outer join s.team"),會忽略 Student 和 Team 類的配置文件的 fetch,但它們類中的 lazy 會被正確執行。

          posted on 2009-04-18 00:17 黃小二 閱讀(366) 評論(0)  編輯  收藏 所屬分類: S/S2SH
          主站蜘蛛池模板: 丘北县| 万宁市| 琼中| 鄂尔多斯市| 云霄县| 泽州县| 丰顺县| 崇礼县| 南涧| 西平县| 蒙自县| 龙江县| 临朐县| 旺苍县| 保山市| 武隆县| 镇雄县| 阿图什市| 郓城县| 祁东县| 公安县| 监利县| 漳平市| 内丘县| 澄迈县| 巫溪县| 长垣县| 滦南县| 隆德县| 闵行区| 丽江市| 乐陵市| 屯门区| 黄梅县| 阿克陶县| 安溪县| 成都市| 宜君县| 密云县| 五河县| 井冈山市|