Ржевский Дмитрий Rzhevskiy Dmitry
понедельник авг 04, 2008
hibernate proxy: не работает instance of
Есть такие хибернейтовские классы:

Т.е. (a.getAbstractB() instanceOf C || a.getAbstractB() instanceOf D) всегда false. a.getAbstractB() будет являться прокси для AbstractB.
Чтобы корректно всё работало нужно написать
AbstractB b= getImplementation(a.getAbstractB());
и тогда (b instanceOf C || b instanceOf D) будет всегда возвращать true
/**
* unwrap from hibernate proxy.
* @param hibernateProxy proxy with model object subclass
* @return unwrapped object
*/
Object getImplementation(Object hibernateProxy) {
if (hibernateProxy instanceof HibernateProxy) {
HibernateProxy hibernateProxy1 = (HibernateProxy) hibernateProxy;
Object impl = hibernateProxy1.getHibernateLazyInitializer().getImplementation();
return impl;
} else {
return hibernateProxy;
}
}
Здесь опиcана похожая проблема для метода equals
Posted at 06:05PM авг 04, 2008 by Дима in Java | Комментарии[0]
Комментарии:

