2013-04-11 104 views
0

使用經典作者/書籍模式(grails 2.2.0)。Grails一對多保存孩子不刷新父親子集

class Author { 
    static hasMany = [books: Book] 
} 

class Book { 
    static belongsTo = [author: Author] 
} 

爲什麼當我創建一個子實例它dosent更新父集:

Author author = new Author().save() 
Book book = new Book(author: author).save() 

assert author.books.size == 1 // FAIL 

由於數據庫author對象不會改變,爲什麼我必須使用author.addToBooks(書) 。保存() ???

回答

4

每Grails的addTo documentation

此外,調用AddTo就*初始化對象的關聯集合,並在每個書作者屬性的向後引用。

AddTo就明確地增加了該協會收集背面的基準英寸在你的例子中,你只是添加了反向引用,但從來沒有收集關聯。基本上級聯關聯只能從所有者到依賴關係執行。如果你覺得這是有道理的,因爲如果你有類似以下內容會發生什麼:

class Author { 
    static hasMany = [fictionBooks: Book, nonFictionBooks: Book] 
} 

然後收集應您的new Book(author: author).save()保存?

+0

是的,它真的讓sens – Thermech 2013-04-11 17:00:34