我搜索了答案,但我无法正确理解。当我们在CascadeType.ALL
关系上设置CascadeType.REMOVE
时,orphanRemoval
,cascade = FetchType.EAGER
,@OneToMany
之间有什么区别?
一旦我在删除记录时遇到问题。我使用了以下
@OneToMany(cascade = CascadeType.ALL, mappedBy = "companyEntity", fetch = FetchType.EAGER)
Set<EmployeeEntity> employeeEntities;
当我尝试删除员工记录时,它没有向我显示任何异常,也没有删除记录。但是,当我将CascadeType.ALL
更改为CascadeType.REMOVE
时,它才有效。
为何不使用CascadeType.ALL
而不是CascadeType.REMOVE
?
感谢您提前做出简单的解释;)
答案 0 :(得分:2)
This解释了部分问题。
&#39; OrphanRemoval =真&#39; Vs&#39; CascadeType.REMOVE&#39;
两个设置之间的区别在于对删除的响应 父实体指向的集合中的子对象。
如果指定了orphanRemoval = true,则删除的地址实例为 自动删除。如果仅指定了cascade = CascadeType.REMOVE 由于删除关系不是a,因此不会采取自动操作 删除操作。