为了使用Spring持久性但保持不可变类型,我已经在我的数据类中添加了PersistenceConstructor注释。这告诉Spring在从数据库加载类时使用该构造函数。
然而,我遇到了让Spring找到构造函数的问题。
data class MyData @PersistenceConstructor constructor(@Id val id: Int? = null, val a:String)
这在我的电脑上百分之百有效,但在部署到Heroku后始终失败。
看起来,通过为参数设置默认值,Kotlin会生成多个构造函数,但问题在于每个构造函数都会应用注释,因此只有运气(或JDK实现特定)选择哪一个Spring会使用。默认值没有参数名称,因此Spring不知道该怎么处理它。
我的真实构造函数比这个更大,如果没有默认值,那将是一种痛苦。是否有办法让注释仅适用于没有默认值的构造函数?