2014-09-29 57 views
0

給定一個域類:可以更改域對象字段導致grails域被認爲是修改/髒?

class Book { 
    def title 
    Author author 
} 

class Author { 
    def name 
} 

鑑於一本書實例:

Author author = new Author(name: 'joe') 
author.save() 
Book book = new Book(author:author, title: 'groovy book') 
book.save() 

如果我改變了作者的名字:

author.name = 'john' 

是本書認爲髒?或修改?

+0

如果你希望它們被持久化,'title'和'name'屬性應該被賦予'String'類型,而不是'def' – 2014-09-29 20:29:32

回答

1

不,在此情況下,book不被視爲dirty,因爲book已被保存。只有author被認爲是dirty。鑑於book沒有任何財產已經改變,只有author財產。

+1

這是真的,你可以使用一些GORM輔助方法來看到''println author.isDirty()','println book.isDirty()','println author.getDirtyPropertyNames()','println book.getDirtyPropertyNames()'),但邏輯上你可能會說如果一個實例的屬性是髒的,那麼這個不乾淨。如果這使用傳統的基於集合的映射方法,通過'author.addToBooks(book)'持久化該書籍,那麼書籍實例中的更改會玷污作者,並且保存作者會過度驗證並保存該書籍。但這不是它在逆向工作的方式。 – 2014-09-30 07:28:42