我想通过自省获得由 Hibernate 管理的对象的表名(惰性)。
我的对象在属性处理程序中包含“org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer”。
我的对象是“mypackage.myObjectDO_ _javassist_2 $ $”类型,不包含“mypackage.myObjectDO”类包含的注释(我寻找注释javax.persistence.Table)。
我能怎么做?
我想通过自省获得由 Hibernate 管理的对象的表名(惰性)。
我的对象在属性处理程序中包含“org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer”。
我的对象是“mypackage.myObjectDO_ _javassist_2 $ $”类型,不包含“mypackage.myObjectDO”类包含的注释(我寻找注释javax.persistence.Table)。
我能怎么做?
我想通过自省获得由 Hibernate 管理的对象的表名(惰性)。
这是一个不寻常的需求(Hibernate 应该把它抽象掉)但是假设你真的需要它......
我的对象是类型 (...) 并且不包含类 (...) 包含的注释
您必须取消代理代理。这是先前答案(来自 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 论坛中的将代理对象转换为真实对象。