Hibernate单向多对一和级联删除

时间:2015-01-25 20:49:23

标签: java sql hibernate jpa many-to-one

我是Hibernate的新手,我需要在删除级联上使用单向多对一。

显然唯一的选择是,当父母知道其子女时。 但是,如果我通过SQL手动执行该操作呢?这个解决方案好吗?

alter table CHILDREN 
add constraint FK_i4jjy61om foreign key (PARENT)
references PARENT
on delete cascade;

1 个答案:

答案 0 :(得分:1)

您可以使用SQL ON DELETE CASCADE,但必须小心evict属于您要删除的Parent的所有子实体。

如果你已经加载了Parent's Child,当你删除Parent时,如果没有Hibernate知道entity state change,那么将从数据库中删除Child。

为了解决这种情况,最好驱逐所有相关的子实体,以确保不会意外地通过其他一些关联transitive persistence重新保留它们。