我想通过内省检查由Hibernate管理的对象的表名(在懒惰中)。
我的对象在属性处理程序中包含“org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer”。
我的对象是“mypackage.myObjectDO_ _javassist_2 $ $”类型,并且不包含类“mypackage.myObjectDO”包含的注释(我寻找注释javax.persistence.Table)。
我该怎么办?
答案 0 :(得分:0)
我想通过内省检查由Hibernate管理的对象的表名(在懒惰中)。
这是一个不寻常的需求(Hibernate应该将其抽象出来),但是假设你真的需要它......
我的对象是类型(...),不包含类(...)包含的注释
您必须取消代理代理。这是来自a previous answer(来自Bozho)的一个小方法:
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;
}
另请参阅Hibernate论坛中的Converting proxy object to the real thing。