我有一个域对象,我正在更改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 = []
所以似乎hibernate没有认识到对象是脏的。如何让它看到对象脏?