我遇到过几个实例,在这些实例中,POJO采用代理的hibernate bean进行一些工作。
例如,如果我xml为框架X注释bean并将其传递给框架X,它就不会识别bean,因为它传递了代理对象 - 它没有框架X的注释。
这是否有共同的解决方案?我不希望将bean定义为急切加载,或者在应用程序的任何位置转换延迟加载。
答案 0 :(得分:5)
您可以在传递对象之前取消对其进行异步处理:
public static <T> T initializeAndUnproxy(T var) {
if (var == null) {
throw new IllegalArgumentException("passed argument is null");
}
Hibernate.initialize(var);
if (var instanceof HibernateProxy) {
var = (T) ((HibernateProxy) var).getHibernateLazyInitializer()
.getImplementation();
}
return var;
}