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也谈论这个解决方案,但不是如何解决。