使用彈簧持久性但保持不可變類型我已將PersistenceConstructor註釋添加到我的數據類中。這告訴spring在從數據庫加載類時使用該構造函數。使用默認值對Kotlin數據類的Spring構造函數註解
但是,我很難找到構造函數的春天。
data class MyData @PersistenceConstructor constructor(@Id val id: Int? = null, val a:String)
這在我的機器上100%的時間工作,但是當部署到heroku時,它始終失敗。
看起來,通過參數的默認值kotlin會生成多個構造函數,但問題是每個構造函數都會得到應用於它們的註釋,所以它只是運行(或特定於jdk實現)哪一個彈簧會啓動。默認的參數沒有參數的名字,所以Spring不知道如何處理它。
我真正的構造函數比這個大,所以沒有默認值會很痛苦。有沒有辦法讓註釋只適用於沒有默認值的構造函數?
現在Kotlin中還存在其他選項,我添加了一個覆蓋@JvmOverloads [在M12中添加](http://blog.jetbrains.com/kotlin/2015/05/kotlin-m12-is-out/) –
的答案它似乎是JvmOverloads的副作用,因爲在Kotlin數據類中沒有構造函數參數名稱的實際問題。其實看起來像kotlin中的bug –