gpt4 book ai didi

java - 使用 Kotlin : @ManyToOne(fetch = FetchType. LAZY hibernate )

转载 作者:行者123 更新时间:2023-12-01 12:12:15 24 4
gpt4 key购买 nike

我在 Kotlin 中使用 Hibernate,但我遇到了 FetchType.LAZY 的问题在 @ManyToOne关系。考虑以下事项:

@ManyToOne(fetch = FetchType.LAZY)
open var event: Event?

问题是当 FetchType.LAZY被使用,获取的 Event将是类(class) Event_$$_jvst_...JavaassistLazyInitializer在上面。但事件永远不会被初始化,一切都将是空的或空的。
  • 曾经FetchType.LAZY被删除,一切正常。
  • 这在 Java 中没有发生。
  • 我尝试添加 openvar使Event可以正确代理。没有效果。
  • 所有 @Entity类(class)当然是open以及。如果open关键字被删除,将不会创建代理,因此没有懒惰。

  • 我的猜测是 Hibernate 无法轻松代理这些默认的 kotlin getter。有办法解决吗?

    最佳答案

    你可以使用这个静态方法来去代理你的实体

    /**
    * Utility method that tries to properly initialize the Hibernate CGLIB
    * proxy.
    * @param <T>
    * @param maybeProxy -- the possible Hibernate generated proxy
    * @param baseClass -- the resulting class to be cast to.
    * @return the object of a class <T>
    * @throws ClassCastException
    */
    public static <T> T deproxy(Object maybeProxy, Class<T> baseClass) throws ClassCastException {
    if (maybeProxy instanceof HibernateProxy) {
    return baseClass.cast(((HibernateProxy) maybeProxy).getHibernateLazyInitializer().getImplementation());
    }
    return baseClass.cast(maybeProxy);
    }

    关于java - 使用 Kotlin : @ManyToOne(fetch = FetchType. LAZY hibernate ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46373702/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com