休眠与Kotlin:@ManyToOne(fetch = FetchType.LAZY)

我正在使用Hibernate与Kotlin和我在@ManyToOne关系上的@ManyToOne问题。 考虑以下几点:

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

问题是,当使用FetchType.LAZY时,获取的Event将是Event_$$_jvst_...类上的Event_$$_jvst_... JavaassistLazyInitializer 但事件永远不会被初始化,一切都将是空的或空的。

  1. 一旦FetchType.LAZY被删除,一切工作正常。
  2. 这在Java中没有发生。
  3. 我试图在var上添加open ,以便Event可以正确代理。 没有效果。
  4. 所有的@Entity类当然也是open 。 如果open关键字被删除,将不会创建代理,所以没有懒惰。

我的猜测是,Hibernate不能轻易地代理这些默认的kotlin获得者。 有没有办法解决它?

One Solution collect form web for “休眠与Kotlin:@ManyToOne(fetch = FetchType.LAZY)”

你可以使用这个静态方法来解除你的实体

 /** * 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); } 
  • 许多小模块,或几个大型模块的最佳构建性能?
  • 如何在不同的类中共享相同的构造函数aka在接口中定义构造函数?
  • Unweave序列,Kotlinfunction/流式习语
  • 将MainActivity转换为Kotlin之后的后续构建中的ClassNotFoundException
  • String :: toByteArray()不能在Kotlin 中编译
  • 如何对列表中的元素的所有组合执行操作?
  • Kotlin类型推断失败 - 类型不匹配“Found Array <*?>,必需数组<*>?”
  • Android中的Kotlin协程的使用
  • Kotlin - 将List转换为MutableList的最常用的方法
  • ArrayAdapter.clear kotlin
  • 从子包 - Kotlin访问生成的Apollo类
  • Kotlin language will be the best programming language for Android.