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
黃小二 閱讀(364)
評論(0) 編輯 收藏 所屬分類:
S/S2SH