Hibernate单向多对一和级联删除

Hibernate unidirectional many-to-one and cascading delete

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

显然,唯一的选择是,当父级知道其子级时。 但是,如果我通过 SQL 手动执行怎么办?这个解决方案好吗?

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

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

如果您已经加载了父项的子项,当您删除父项时,子项将从数据库中删除,而 Hibernate 并不知道 entity state change

为了解决这种情况,最好逐出所有关联的子实体,以确保您不会不小心通过其他一些关联重新保留它们 transitive persistence