beforeValidate() イベント内でプロパティ値を変更するドメイン オブジェクトがあります。このプロパティがオブジェクトで変更された唯一のプロパティである場合、データベースには何も保持されないようです。デバッガーを調べたところ、オブジェクトが変更されていることがわかりました。しかし、save(flush: true) を呼び出すと、新しい値は保持されません。
私は何が間違っているのでしょうか?
ただし、 beforeValidate() イベントの外で別のプロパティが変更された場合は機能します。
環境: Grails 2.0.1、failOnError はグローバルにオンになっています
編集
validate()
オブジェクトを手動で呼び出していますが、呼び出されていることがわかりbeforeValidate()
ます。電話する前にsave(flush: true)
、次のログを記録しました。
log.debug("isDirty() = ${myObj.isDirty()}")
log.debug("changedVal = ${myObj.val}")
log.debug("dirtyPropertyNames = ${myObj.dirtyPropertyNames}")
印刷したもの
isDirty() = false
changedVal = my new value
dirtyPropertyNames = []
そのため、休止状態はオブジェクトがダーティであることを認識していないようです。オブジェクトが汚れているように見えるようにするにはどうすればよいですか?