SSH整合時執行hibernate查詢報錯:java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy


  今天在整合ssh三個框架時,有一個功能,是查詢所有員工信息,且員工表和部門表是多對一的映射關系,代碼能正常運行到查詢得到一個List集合,但在頁面展示的時候,就報異常了,

java.lang.ClassCastException: com.ch.hibernate.Department_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy

  問題應該出在實體類Department上,然后我參照網上的解釋,將Department.hbm.xml中class標簽上加了一個lazy="false",再次運行,結果正常.

  推測原因,應該是我在查詢員工Employee時,得到的department信息只是一個代理對象,而關閉了延遲加載后,就能查詢得到一個真正的department對象.

  觀察jar包,發現struts的jar包和hibernate的jar包中,都有一個javassist的jar包,將較低版本的刪掉之后,也能運行正常.

   把lazy="false"刪掉之后,執行聯合查詢時,查詢emplotee的關聯類department時,還是只能得到一個代理對象,這是我的hql語言是 String hql="from Employee"; 我們通過左外連接同時查詢deaprtment,改為這個hql語句,String hql="from Employee e left outer join fetch e.department ",就可以查詢到department信息了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM