2

我有一个域对象,我正在更改 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 = []

因此,休眠似乎没有识别出对象是脏的。我怎样才能让它看到物体很脏?

4

0 回答 0