我有一个域对象,我正在更改 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 = []
因此,休眠似乎没有识别出对象是脏的。我怎样才能让它看到物体很脏?