Voj*_*ěch 5 java hibernate kotlin
我正在与Kotlin一起使用Hibernate,但FetchType.LAZY在@ManyToOne关系方面存在问题。考虑以下内容:
@ManyToOne(fetch = FetchType.LAZY)
open var event: Event?
Run Code Online (Sandbox Code Playgroud)
问题是,当FetchType.LAZY使用时,获取的内容Event将是Event_$$_jvst_...带有此类的JavaassistLazyInitializer。但是该事件永远不会初始化,所有内容都将为null或为空。
FetchType.LAZY被删除,一切正常。open,var以便Event可以正确代理。没有效果。@Entity课程当然open也是。如果open删除了关键字,将不会创建任何代理,因此不会造成延迟。我的猜测是,Hibernate无法轻松代理这些默认的Kotlin getter。有办法解决吗?
小智 0
您可以使用此静态方法来代理您的实体
/**
* 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
887 次 |
| 最近记录: |