如何使用带外键的GORM映射在数据库级别实现on delete cascade
?
我不是指应用程序级别的级联删除(由GORM完成的顺序删除)。
答案 0 :(得分:5)
尝试使用级联添加静态映射:' all-delete-orphan'在您的域类
中e.g。
class Parent {
hasOne = [child: Child]
...
static mapping = {
child cascade: 'all-delete-orphan'
}
}
class Child {
belongsTo = [parent: Parent]
}
如果你有时间看到这个:http://grails.org/doc/2.3.7/guide/GORM.html#cascades
希望这会有所帮助
答案 1 :(得分:3)
GORM是一个对象关系映射器,它的实现和职责在应用程序的应用程序层中。您的请求,由您的RDBMS(Postgres或MySQL)处理的级联删除不属于GORM的职责。
但是,完全可以使用触发器在RDBMS上实现级联行为。有关如何完成的信息,请参阅相应的文档。此外,您将需要禁用hibernate的二级缓存(因为由于这些更改,您的数据库将与hibernate不同步)。
最后,为了帮助您维护触发器,您可以使用Grails的数据库迁移插件/功能。
祝你好运,但要小心,因为你正在规避GORM / Hibernate / Grails。