Grails 1.1 对象关联映射 (GORM) - GORM中的关联 Many-to-many

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关联, 你必须自己编写关联的管理代码。