2015-02-05 174 views
0

我在Grails的2.3.8更新到Grails領域don'tpersist

我們有以下域類工作'MyDomain'對象。我可以更新與域關聯的屬性,但是當我嘗試更改實例本身(名稱,標識符或類型)上的任何屬性時,更改不會持續。控制器代碼:

def update(Long id) { 
    --- 
    def myDomain = MyDomain.get(id) 
    myDomain.type = 'DIFFERENT TYPE' 
    myDomain.save(flush:true, failOnError:true) 
} 

但是,數據庫中的信號仍然與創建時的信號類型相同。要嘗試並遵循邏輯,我將beforeUpdate方法添加到打印出類型的域類,並且我可以看到它正在調用,並且在beforeUpdate中它認爲類型是我的新值,但是更新永遠不會持久。沒有例外,對象有效,任何日誌都沒有。任何線索可能導致這種情況?

乾杯!

+0

有些錯誤?如果否,請嘗試beforeInsert()而不是beforeUpdate() – Koloritnij 2015-02-05 15:50:06

+0

不允許有錯誤。只是試着檢查,似乎認爲對象不髒。 – DJOodle 2015-02-05 17:15:28

回答

0

右... 巴掌臉

的位,我並沒有在該職位包括爲他們更新實際上是在服務中發生的事情(與@Transactional註釋,和Im也使用命令對象做一些驗證早些時候在控制器中。Command對象檢查組ID是有效的,如果一個非空被

def group = AppGroup.read(id). 

回來看我不知道爲什麼,但似乎因爲這對象在會話中,這是在交易結束時保存的那個會話,事實並非如此髒。如果一旦我完成了這個組,我就放棄這個組,然後一切正常。

不知道這是爲什麼,但嘿嘿,解決了我的問題。可能試圖查看是否存在()更合適...