使用 gorm 从数据库中删除所有实体,同时忽略外键约束
Delete all entities from database with gorm while ignoring foreign key constraint
我的 Grails 3.0.9
应用程序中有多个域 class,它们之间有 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
来忽略外键约束?
我试过告诉域 class 中的 GORM 像这样级联删除:
static mapping = {
figOtherTable cascade: 'all-delete-orphan'
}
就像 GORM docs 中描述的那样,但这对我不起作用(或者我遗漏了一些东西)。
我读过 here,您可以告诉 MySQL 通过执行以下命令忽略外键约束:
SET FOREIGN_KEY_CHECKS = 0
有没有办法用 GORM 做到这一点?
我认为 GORM 无法在多对多关系中级联删除。您必须自己处理删除...
这个Link也可能对你有帮助http://spring.io/blog/2010/07/02/gorm-gotchas-part-2/
我的 Grails 3.0.9
应用程序中有多个域 class,它们之间有 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
来忽略外键约束?
我试过告诉域 class 中的 GORM 像这样级联删除:
static mapping = {
figOtherTable cascade: 'all-delete-orphan'
}
就像 GORM docs 中描述的那样,但这对我不起作用(或者我遗漏了一些东西)。
我读过 here,您可以告诉 MySQL 通过执行以下命令忽略外键约束:
SET FOREIGN_KEY_CHECKS = 0
有没有办法用 GORM 做到这一点?
我认为 GORM 无法在多对多关系中级联删除。您必须自己处理删除...
这个Link也可能对你有帮助http://spring.io/blog/2010/07/02/gorm-gotchas-part-2/