gpt4 book ai didi

hibernate - Grails一对多保存的子代仅刷新父子集

转载 作者:行者123 更新时间:2023-12-02 14:58:57 25 4
gpt4 key购买 nike

使用经典的作者/书籍模式(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com