隨筆-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 黃小二 閱讀(370) 評論(0)  編輯  收藏 所屬分類: S/S2SH
          主站蜘蛛池模板: 榆中县| 福泉市| 左权县| 抚宁县| 斗六市| 建阳市| 绥阳县| 霍林郭勒市| 彭州市| 博野县| 勃利县| 炎陵县| 同德县| 彩票| 磐石市| 茌平县| 石狮市| 阳新县| 漳州市| 芮城县| 南宫市| 通道| 师宗县| 茶陵县| 平潭县| 河西区| 噶尔县| 克东县| 合水县| 石门县| 平谷区| 云龙县| 苍南县| 岳池县| 闻喜县| 乌兰察布市| 南郑县| 精河县| 阿勒泰市| 葫芦岛市| 横峰县|