【问题标题】:Hibernate Lazy Loading Proxy Incompatible with Other FrameworksHibernate 延迟加载代理与其他框架不兼容
【发布时间】:2010-06-02 16:10:29
【问题描述】:

我遇到过几个实例,其中使用 POJO 执行某些工作的框架会使用代理的休眠 bean。

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

有没有通用的解决方案?我不希望将 bean 定义为急切加载,或者在应用程序中的任何位置开启延迟加载。

【问题讨论】:

    标签: java hibernate orm lazy-loading


    【解决方案1】:

    您可以在传递对象之前取消代理:

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

    【讨论】:

    • 谢谢。我想最好的解决方案是在任何框架获取它之前将此代码插入拦截器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多