使用经典作者/书籍模式(grails 2.2.0)。
class Author {
static hasMany = [books: Book]
}
class Book {
static belongsTo = [author: Author]
}
为什么在创建子实例时,它会更新父集:
Author author = new Author().save()
Book book = new Book(author: author).save()
assert author.books.size == 1 // FAIL
由于作者对象不会在数据库中更改,为什么我必须使用author.addToBooks(book).save()???
答案 0 :(得分:4)
Per Grails addTo documentation,
此外,调用addTo *初始化关联的集合,并在每本Book中设置author属性的反向引用。
addTo 明确添加了和集合中的关联。在您的示例中,您只是添加了反向引用,但从不添加集合中的关联。基本上级联关联仅从所有者到依赖者执行。如果你想到这一点就有意义了,因为如果你有类似以下内容会发生什么:
class Author {
static hasMany = [fictionBooks: Book, nonFictionBooks: Book]
}
然后您的new Book(author: author).save()
应该将哪个收藏集保存到?