Hibernate延迟加载代理与其他框架不兼容

时间:2010-06-02 16:10:30

标签: java hibernate orm lazy-loading

我遇到过几个实例,在这些实例中,POJO采用代理的hibernate bean进行一些工作。

例如,如果我xml为框架X注释bean并将其传递给框架X,它就不会识别bean,因为它传递了代理对象 - 它没有框架X的注释。

这是否有共同的解决方案?我不希望将bean定义为急切加载,或者在应用程序的任何位置转换延迟加载。

1 个答案:

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