Kotlin 与 JPA/Hibernate:缺少无参构造函数的问题(default constructor hell)
大家好!我写 Kotlin 大约半年了,最近在使用 JPA/Hibernate 时遇到了一个问题。我有一个简单的实体:
@Entity
data class User(
@Id @GeneratedValue
val id: Long = 0,
val name: String,
val email: String
)
启动应用程序时,Hibernate 抛出异常:
org.hibernate.InstantiationException: No default constructor for entity: com.example.User
我明白 Hibernate 需要一个无参构造函数来通过反射创建对象。但在 Kotlin 中,如果参数没有默认值,data class 就没有这样的构造函数。我尝试过添加 Jackson 的 @NoArg,但没有帮助。我也听说过 kotlin-jpa 插件,但不确定如何正确配置它。
问题:如何在 Kotlin 中正确组织 JPA 实体,以避免缺少默认构造函数的问题?是否有标准的方法?