Avatar ·

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 实体,以避免缺少默认构造函数的问题?是否有标准的方法?