内省 - 由Hibernate管理的对象的表名(JavassistLazyInitializer)

时间:2010-09-24 13:47:23

标签: hibernate annotations introspection lazy-evaluation javassist

我想通过内省检查由Hibernate管理的对象的表名(在懒惰中)。

我的对象在属性处理程序中包含“org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer”。

我的对象是“mypackage.myObjectDO_ _javassist_2 $ $”类型,并且不包含类“mypackage.myObjectDO”包含的注释(我寻找注释javax.persistence.Table)。

我该怎么办?

1 个答案:

答案 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