JPA CascadeType.ALL不删除子级

时间:2019-02-25 18:33:08

标签: java hibernate spring-boot jpa java-ee

我在Java中有2个具有父级-子级关系的类,而删除子级有问题。当我删除一个孩子时,该函数返回true,但是当我检查数据库没有任何反应时,该孩子仍然未被删除。

这是我的班级父级:Engagement.java

      date          id size type county member_p10 youngest_age sex position
1 20190221 18105265-ab    3    4      1          3            5   1        5
2 20190222 18105265-ab    2    4      1          2            7   1        5
3 20190105 18161665-aa    2    4      1          2            7   2        4
4 20190110 18161665-aa    1    2      1          1            7   2        0
5 20190221 18502020-aa    2    4      5          2            7   1        3
6 20190222 18502020-aa    1    2      5          1            7   1        0

这是我班上的孩子:Sub_Engagement.java

@OneToMany(fetch=FetchType.EAGER, mappedBy="parent", cascade=CascadeType.ALL)
 private Collection<Sub_Engagement> subs_engs;

使用此代码POST / GET / PATCH可以正常工作,但DELETE不起作用。

我尝试了这样的解决方案:

@ManyToOne
 @JoinColumn(name="parent")
 private Engagement parent;

和DELETE有效,但是我尝试更新孩子时PATCH / PUT不起作用。 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

安德罗尼库斯(Andronicus)说得对,确实应该有效。奇怪的是,您在进行更新和删除时处于“或非”状态。

再次检查您的persistence.xml。有什么可以覆盖注释的吗?

我还建议启用跟踪并检查实际执行的sql查询。是否记录了删除语句?您的交易确实已提交吗?

我们可以看看您用于删除实体的代码吗?您是使用entitymanager的remove()方法还是执行一些自定义的jpql?

还,您正在使用CMT(例如EJB)还是通过JTA自己处理事务?