Grails支持many-to-many关联,通过在关联双方定义 hasMany ,并在关联拥有方定义belongsTo :[code]class Book {
static belongsTo = Author
static hasMany = [authors:Author]
String title
}
class Author {
static hasMany = [books:Book]
String name
}[/code]Grails在数据库层使用一个连接表来映射many-to-many,在这种情况下,Author 负责持久化关联,并且是唯一可以级联保存另一端的一方 。
例如,下面这个可以进行正常级联保存工作:new Author(name:"Stephen King")
.addToBooks(new Book(title:"The Stand"))
.addToBooks(new Book(title:"The Shining"))
.save()
而下面这个只保存 Book而不保存 authors!new Book(name:"Groovy in Action")
.addToAuthors(new Author(name:"Dierk Koenig"))
.addToAuthors(new Author(name:"Guillaume Laforge"))
.save()
这是所期待的行为,就像Hibernate,只有many-to-many的一方可以负责管理关联。
当前,Grails的Scaffolding 特性不支持many-to-many关联, 你必须自己编写关联的管理代码。