(快速参考)

belongsTo

目的

定义了一个“从属于”关系,其中由 belongsTo 指定的类对该关系进行控制。这样做的效果是控制保存和删除级联的行为。具体行为取决于关系类型

  • 多对一/一对一:保存和删除将从所有者级联到被控制者(具有 belongsTo 的类)。

  • 一对多:保存始终从一侧级联到多侧,但如果多侧有 belongsTo,则删除也会向该方向进行级联。

  • 多对多:仅保存从“所有者”到“被控制者”的级联,不删除。

示例

class Book {
   String title

   static belongsTo = [author: Author]
}

在此示例中,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]
}

在这些示例中,两种技术都创建了一个名为 authorAuthor 属性。此外,Map 属性可以指定多个属性和类型(如果该类属于多个所有者)。

belongsTo 属性简单易用,意味着你不必担心 Hibernate 级联策略,但是如果你需要对级联进行更多控制,则可以使用 ORM DSL。这允许对级联更新和删除进行细粒度控制。