- 2010-06-11
- Hibernate
mattyです。
Hibernateで遅延ロードしたプロキシオブジェクトをinstanceofするときのメモ。
マッピング時にlazy属性をtrueに指定するとプロキシオブジェクトが設定されるため
本来のクラスでinstanceofしてもfalseになってしまいます。
そのようなプロキシオブジェクトではなく本来のオブジェクトを呼び出したいときに便利なのが
org.hibernate.proxy.HibernateProxyHelpeクラスの
getClassWithoutInitializingProxyメソッドです。
このメソッドでは下記のように本来のオブジェクトプロキシオブジェクトから取得。
public static Class getClassWithoutInitializingProxy(Object object) { if (object instanceof HibernateProxy) { HibernateProxy proxy = (HibernateProxy) object; LazyInitializer li = proxy.getHibernateLazyInitializer() return li.getPersistentClass(); } else { return object.getClass(); } }
このメソッドにオブジェクトを渡せば本来のクラスを取得してinstanceof出来ます。
- Newer: GWTでHello World
- Older: MySQLのSTRICT_TRANS_TABLES
Comments:0
Trackback+Pingback:0
- TrackBack URL for this entry
- http://netforestdevnote.blog26.fc2.com/tb.php/46-5d129cb9
- Listed below are links to weblogs that reference
- HibernateProxyオブジェクトのinstanceof from Netforest Developer's Note