class Book {
String title
static belongsTo = [author: Author]
}
belongsTo
目的
定义了一个“从属于”关系,其中由 belongsTo
指定的类对该关系进行控制。这样做的效果是控制保存和删除级联的行为。具体行为取决于关系类型
-
多对一/一对一:保存和删除将从所有者级联到被控制者(具有
belongsTo
的类)。 -
一对多:保存始终从一侧级联到多侧,但如果多侧有
belongsTo
,则删除也会向该方向进行级联。 -
多对多:仅保存从“所有者”到“被控制者”的级联,不删除。
示例
在此示例中,Book
类指定它属于 Author
类,因此当删除 Author
实例时,其所有关联的 Book
实例也会被删除。
说明
belongsTo
属性抽象了 Hibernate 中级联行为的性质。如果你希望一个类属于另一个类,但没有反向引用,那么你可以将类或类列表指定为值
class Book {
static belongsTo = Author
}
或
class Book {
static belongsTo = [Author, Library]
}
反向引用(即指向所有者的链接属性)可以通过两种方式之一添加
class Book {
Author author
static belongsTo = Author
}
或
class Book {
static belongsTo = [author: Author]
}
在这些示例中,两种技术都创建了一个名为 author
的 Author
属性。此外,Map 属性可以指定多个属性和类型(如果该类属于多个所有者)。
belongsTo
属性简单易用,意味着你不必担心 Hibernate 级联策略,但是如果你需要对级联进行更多控制,则可以使用 ORM DSL。这允许对级联更新和删除进行细粒度控制。