java – 使用Kotlin的Hibernate:@ManyToOne(fetch = FetchType.
发布时间:2020-12-15 02:20:18 所属栏目:Java 来源:网络整理
导读:我正在使用Hibernate和Kotlin,我在@ManyToOne关系上遇到FetchType.LAZY问题.考虑以下: @ManyToOne(fetch = FetchType.LAZY)open var event: Event? 问题是当使用FetchType.LAZY时,获取的Event将是类Event _ $$_ jvst _…并且带有JavaassistLazyInitializer.
我正在使用Hibernate和Kotlin,我在@ManyToOne关系上遇到FetchType.LAZY问题.考虑以下:
@ManyToOne(fetch = FetchType.LAZY) open var event: Event? 问题是当使用FetchType.LAZY时,获取的Event将是类Event _ $$_ jvst _…并且带有JavaassistLazyInitializer.但事件永远不会被初始化,一切都将为null或为空. >删除FetchType.LAZY后,一切正常. 我的猜测是Hibernate无法轻易代理这些默认的kotlin getter.有办法解决吗? 解决方法
您可以使用此静态方法来对您的实体进行deproxy
/** * 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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |