Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate在哪些情况下级联删除?_Java_Hibernate_Jpa - Fatal编程技术网

Java Hibernate在哪些情况下级联删除?

Java Hibernate在哪些情况下级联删除?,java,hibernate,jpa,Java,Hibernate,Jpa,目前我试图深入研究一些冬眠机制,我真的很难理解级联机制 我发现了(当然还有更多的网站,但这是一个很好的总结)关于Cascade.REMOVE和孤儿移除的内容,我觉得它们向我充分解释了这些机制 然而,在测试我的数据模型时,我偶然发现了一个问题,使我再次怀疑我的知识 我有两个实体的定义如下: @Entity public class Parent { .... @OneToMany(mappedBy="parent", fetch=FetchType.EAGER, cascade={

目前我试图深入研究一些冬眠机制,我真的很难理解级联机制

我发现了(当然还有更多的网站,但这是一个很好的总结)关于Cascade.REMOVE和孤儿移除的内容,我觉得它们向我充分解释了这些机制

然而,在测试我的数据模型时,我偶然发现了一个问题,使我再次怀疑我的知识

我有两个实体的定义如下:

@Entity
public class Parent {
    ....
    @OneToMany(mappedBy="parent", fetch=FetchType.EAGER, cascade={ CascadeType.REMOVE })
    @Fetch(FetchMode.SUBSELECT)
    private List<Child> children;
    ...
}

----

@Entity
public class Child {
    ...
    @ManyToOne
    private Parent parent;
    ....
}
因此,在我看来,Hibernate只是试图删除
父实体,而我认为它实际上会首先级联并删除
子实体。我在Stackoverflow上找到的以下答案似乎支持观察到的行为:

我知道我的问题的解决方案是首先手动删除相关的
子实体
,但对于潜在增长的数据模型,我显然更喜欢自动解决方案

所以我的问题是:在我的情况下,哪个答案是正确的,为什么?Hibernate显然不会在我的例子中级联删除,但这是因为我的配置错误还是设计错误

Referential integrity constraint violation: "FK_TA9YL3WAEU74UG94QYYBU4SWY: PUBLIC.CHILD FOREIGN KEY(PARENT_ID) REFERENCES PUBLIC.PARENT(ID) (1)"; SQL statement:
delete from Parent where id=?