使用经典的作者/书籍模式(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()?
最佳答案
Per Grails addTo documentation,
另外,调用addTo *会初始化关联的集合,并在每本Book中设置author属性的后向引用。
addTo 在关联和的显式引用中显式添加关联。在您的示例中,您仅添加反向引用,而未添加集合中的关联。基本上,级联关联仅从所有者执行到从属。如果考虑到这一点,这是有道理的,因为如果您遇到以下情况,将会发生什么:
class Author {
static hasMany = [fictionBooks: Book, nonFictionBooks: Book]
}
那么您的
new Book(author: author).save()
应该保存到哪个集合?
关于hibernate - Grails一对多保存的子代仅刷新父子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15950220/