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

问题描述 投票:3回答:1

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

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

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

java hibernate orm lazy-loading
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.