2012-03-09 94 views
3

做,我們有beforeUpdateOf *更新前更新後

而另一個問題(其中*是一些外地?):

高清更新前= {log.info( 「在更新前」 + this.status)}

DEF更新後= {log.info( 「在更新後」 + this.status)}

這兩個給出相同的狀態。 儘管對象的實際狀態(這)是從X更新到y

回答

3

有當一個屬性更改爲不活動,但您可以添加在一個明確的制定者,做的東西:

class MyDomainClass { 
    String status 

    void setStatus(String status) { 
     this.status = status 
     // do something based on changed value 
    } 
} 

你在beforeUpdateafterUpdate看到了同樣的價值,因爲這些回調是當Hibernate保存更改後的值到數據庫中。在Hibernate啓動並完成更新的時間之間更改值是很常見的。

如果你正在尋找從數據庫中的原始值,它可以使用http://grails.org/doc/latest/ref/Domain%20Classes/getPersistentValue.html

+1

謝謝你的提示!小心,儘管「this.status = status」引發無限遞歸。我解決了在我的情況下調用super.setStatus(newStatus)。 – 2012-11-23 15:08:52