Grails GORM级联删除映射

时间:2014-03-29 01:55:03

标签: hibernate grails gorm

如何使用带外键的GORM映射在数据库级别实现on delete cascade

我不是指应用程序级别的级联删除(由GORM完成的顺序删除)。

2 个答案:

答案 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。