(快速参考)

级联

用途

配置关联的级联行为。

示例

class Author {

    static hasMany = [books: Book]

    static mapping = {
        books cascade: 'all-delete-orphan'
    }
}

说明

用法:关联名称(级联:字符串)

参数

  • 级联 - 要定义的级联行为。可以是 allmergesave-updatedeletelockrefreshevictreplicateall-delete-orphan(仅限一对多关联)中的一个或多个(以逗号分隔)。

默认情况下,当一个实体“属于”另一个实体时,GORM 会配置“all”的级联策略。例如

class Book {
    static belongsTo = [author: Author]
}
class Author {
    static hasMany = [books: Book]
}

在此,所有持久性操作将从 Author 域级联到 Book 域。因此,当 Author 被删除时,所有关联的图书也将被删除。

如果关联未定义所有者(“属于”关系)

class Book {
}
class Author {
    static hasMany = [books: Book]
}

那么 GORM 将默认使用“save-update”的级联策略。因此,如果删除 Author,则关联 Book 的域不会被删除。使用关联上的 级联 参数来自定义此行为

class Author {

    static hasMany = [books: Book]

    static mapping = {
        books cascade: 'all-delete-orphan'
    }
}

使用此配置,如果 BookAuthor’s 关联的 books 中移除(成为孤儿),它也将被删除。

请参阅 Hibernate 用户指南中的传递持久性一节。