The foreign key is not enough, you have to set a 'on delete cascade' constraint on the foreign key to get this working.
- Example without the 'on delete cascade' constraint set :
Code:
CREATE TABLE CLASSA (
ID NUMBER(19) PRIMARY KEY,
NOTE VARCHAR2(255 CHAR)
);
CREATE TABLE A_MAP (
A_ID NUMBER(19) PRIMARY KEY,
MAP_INDEX VARCHAR2(255 CHAR) NOT NULL,
MAP_ELEMENT CLOB,
CONSTRAINT FK1 FOREIGN KEY (A_ID) REFERENCES CLASSA(ID)
);
INSERT INTO CLASSA VALUES(1, 'TEST');
INSERT INTO A_map VALUES(1, 'INDEX1', 'INDEX1_VALUE');
DELETE FROM CLASSA;
The following exception is thrown on the DELETE operation :
Code:
'integrity constraint violated - child record found'
- Example with the 'on delete cascade' constraint set :
Code:
CREATE TABLE CLASSA (
ID NUMBER(19) PRIMARY KEY,
NOTE VARCHAR2(255 CHAR)
);
CREATE TABLE A_MAP (
A_ID NUMBER(19) PRIMARY KEY,
MAP_INDEX VARCHAR2(255 CHAR) NOT NULL,
MAP_ELEMENT CLOB,
CONSTRAINT FK1 FOREIGN KEY (A_ID) REFERENCES CLASSA(ID) ON DELETE CASCADE
);
INSERT INTO CLASSA VALUES(1, 'TEST');
INSERT INTO A_map VALUES(1, 'INDEX1', 'INDEX1_VALUE');
DELETE FROM CLASSA;
This goes fine.
That's why I want to set the 'on delete cascade' constraint in the Hibernate mapping file
Gerald