正如 级联更新 这节描述的,控制更新和删除的主要机制是从关联一端到 belongsTo 静态属性的一端。
然而,通过cascade属性,ORM DSL可以让你访问Hibernate 的 transitive persistence能力。
有效级联属性的设置包括:
• create - 创建从关联端到另一端的级联
• merge - 合并 detached 联合
• save-update - 只级联保存和更新
• delete - 只级联删除
• lock - 关联的悲观锁是否被级联
• refresh - 级联refreshes
• evict - cascades evictions (equivalent to discard() in GORM) to associations if set
• all - 级联所有操作
• delete-orphan - Applies only to one-to-many associations and indicates that when a child is removed from an association then it should be automatically deleted
获得级联样式更好的理解和用法的介绍,请阅读Hibernate文档的transitivepersistence 章节
使用上述的值定义一个或多个级联属性(逗号分隔):class Person {
String firstName
static hasMany = [addresses:Address]
static mapping = {
addresses cascade:"all,delete-orphan"
}
}
class Address {
String street
String postCode
}