def fictBook = new Book(title: "IT")
def nonFictBook = new Book(title: "On Writing: A Memoir of the Craft")
def a = new Author(name: "Stephen King")
.addToFiction(fictBook)
.addToNonFiction(nonFictBook)
.save()
addTo*
用途
向一到多或多到多的关系添加一个域类关系,关系由方法后缀中使用的属性指示。
示例
描述
addTo*
方法是一种动态方法,它使用关联自动向关联添加实例。它还会自动配置双向关系,以便设置双方。
考虑上述示例中使用的这些域类
class Author {
String name
static hasMany = [fiction: Book, nonFiction: Book]
}
class Book {
String title
static belongsTo = [author: Author]
}
此示例创建了一本新的小说、一本新非小说和一位作者。addToFiction
是一个动态方法,其工作原理是,因为 Fiction
部分对应于由 hasMany
声明产生的 fiction
集合,对 NonFiction
和 nonFiction
也是如此。在 Author
上调用 save()
后,关联的 Book
实例也会被暂时保存,即使我们没有对任何一个调用 save()
。
此外,调用 addTo* 会初始化关联集合,并设置每个 Book
中 author
属性的回引。
此方法还有接受 Map
而不是域类实例的更紧凑版本
def a = new Author(name: "Stephen King")
.addToFiction(title: "IT")
.addToNonFiction(title: "On Writing: A Memoir of the Craft")
.save()
GORM 知道正在添加的类型并可以使用标准 Map
构造函数为您创建实例。