Kotlin有this noarg plugin为类生成一个合成的noarg构造函数,没有一个可以帮助JPA(以及像mybatis,hibernate这样的框架)来实例化一个新对象 . 例如:

data class User(val id: Int, val name: String)

鉴于这些属性被声明为val,即不可变,这些框架如何创建一个包含所有值的完全烘焙对象 . kotlin-noarg插件只是帮助实例化一个新实例,但属性(id和name)仍然是不可变的,因此在创建对象后不应该允许更改 .

为了清楚起见,添加noarg插件后,事情完全正常 . 问题是,鉴于属性是不可变的 .

This SO question也谈论这个解决方案,但不是如何部分 .