有一个相似的问题here,但没有帮助
我有一个经典的Organisme
多对多关系。 Organisme_groupe
| Groupe
。
删除Organisme
时,我想保留Groupe
,反之亦然。
实际上,如果我删除了Organisme,附加的Groupe也将被删除。
我有点困惑,因为据我所知,级联操作不会比子表(这里是中间表)走得更远。
有机体
CREATE TABLE IF NOT EXISTS `organisme` (
`ORGANISME_ID` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`TYPE_ORGANISME` varchar(128) NOT NULL DEFAULT '',
`NAME` varchar(80) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
组别
CREATE TABLE IF NOT EXISTS `groupe` (
`GROUPE_ID` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`NAME_GROUPE` varchar(50) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Organisme_groupe
CREATE TABLE IF NOT EXISTS `organisme_groupe`(
`ORGANISME_ID` int(10) NOT NULL,
`GROUPE_ID` int(10) NOT NULL,
PRIMARY KEY (ORGANISME_ID, GROUPE_ID)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
约束条件
ALTER TABLE `organisme_groupe`
ADD CONSTRAINT `FK_organisme_groupe_1` FOREIGN KEY (`ORGANISME_ID`) REFERENCES `organisme` (`ORGANISME_ID`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_organisme_groupe_2` FOREIGN KEY (`GROUPE_ID`) REFERENCES `groupe` (`GROUPE_ID`) ON DELETE CASCADE ON UPDATE CASCADE;
最佳答案
MySql映射是正确的,问题是我在Hibernate模型中添加了Cascading批注,这似乎覆盖了MySQL约束。