Hibernate設定了lazy,繼承的subclass將無法利用instanceof來判斷

Hibernate中,如果設定了lazy,繼承的subclass無法利用instanceof來判斷

剛過完年系統就發生了一個Bug:原因很簡單,我設計了許多的抽象的Class,再利用繼承的方式去實作這些Bean。為了達到輕量化的目的,於是我用了Hibernate的Lazy機制。

原來Hibernate的Lazy,除了會帶給Session的Close問題外,還會產生無法判斷instanceof的問題!

直接顯示 YourClass  這個 Class Name會出現,YourClass_$$_javassist_15。

利用Google查詢,果然有解法!

http://stackoverflow.com/questions/1139611/loading-javassist-ed-hibernate-entity

最後有人提出了 org.hibernate.Hibernate.getClass( yourClass ); 值得注意的是上述的回答文中,還有另外一個好用的東西:org.hibernate.proxy.HibernateProxyHelper.getClassWithoutInitializingProxy

這意外的學習讓我了解不少  XD

廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s