使用gorm删除数据库中的所有实体,同时忽略外键约束

时间:2016-03-24 09:25:33

标签: mysql grails gorm grails-3.0

我的Grails 3.0.9应用程序中有多个域类,彼此之间有many-to-many个关系。当我想从数据库中删除所有实体时,我收到错误消息:

org.springframework.dao.DataIntegrityViolationException: Hibernate operation: could not execute statement; SQL [n/a]; Cannot delete or update a parent row: a foreign key constraint fails (`database`.`figure`, CONSTRAINT `FK_dbgwxhc7ggggypvmf967wvgfw` FOREIGN KEY (`fig_other_table_id`) REFERENCES `other_table` (`id`)); nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`database`.`figure`, CONSTRAINT `FK_dbgwxhc7ggggypvmf967wvgfw` FOREIGN KEY (`fig_other_table_id`) REFERENCES `other_table` (`id`))

这次是否有办法使用GORM忽略外键约束?

我试图告诉域类中的GORM如下所示级联删除:

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

就像在GORM docs中描述的一样,但这对我不起作用(或者我错过了一些东西)。

我已阅读here,您可以通过执行以下命令告诉MySQL忽略外键约束:

SET FOREIGN_KEY_CHECKS = 0 

有没有办法用GORM做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为GORM无法在多对多关系中级联删除。你必须自己处理删除...

此链接也可以为您提供帮助Link