做,我們有beforeUpdateOf *更新前更新後
而另一個問題(其中*是一些外地?):
高清更新前= {log.info( 「在更新前」 + this.status)}
DEF更新後= {log.info( 「在更新後」 + this.status)}
這兩個給出相同的狀態。 儘管對象的實際狀態(這)是從X更新到y
做,我們有beforeUpdateOf *更新前更新後
而另一個問題(其中*是一些外地?):
高清更新前= {log.info( 「在更新前」 + this.status)}
DEF更新後= {log.info( 「在更新後」 + this.status)}
這兩個給出相同的狀態。 儘管對象的實際狀態(這)是從X更新到y
你可能想看看Grails的審計插件:Audit Logging和Audit Trail
有當一個屬性更改爲不活動,但您可以添加在一個明確的制定者,做的東西:
class MyDomainClass {
String status
void setStatus(String status) {
this.status = status
// do something based on changed value
}
}
你在beforeUpdate
和afterUpdate
看到了同樣的價值,因爲這些回調是當Hibernate保存更改後的值到數據庫中。在Hibernate啓動並完成更新的時間之間更改值是很常見的。
如果你正在尋找從數據庫中的原始值,它可以使用http://grails.org/doc/latest/ref/Domain%20Classes/getPersistentValue.html
謝謝你的提示!小心,儘管「this.status = status」引發無限遞歸。我解決了在我的情況下調用super.setStatus(newStatus)。 – 2012-11-23 15:08:52