我搜索了答案,但无法正确找到答案。当我们设置FetchType.EAGER
时,CascadeType.ALL
、cascade = CascadeType.REMOVE
、orphanRemoval
有什么区别@OneToMany
关系?
有一次我在删除记录时遇到问题。我用过以下内容
@OneToMany(cascade = CascadeType.ALL, mappedBy = "companyEntity", fetch = FetchType.EAGER)
Set<EmployeeEntity> employeeEntities;
当我尝试删除员工记录时,它没有向我显示任何异常,也没有删除记录。但是当我将 CascadeType.ALL 更改为 CascadeType.REMOVE 时,它就可以工作了。
为什么它不能与 CascadeType.ALL
一起使用,而是与 CascadeType.REMOVE
一起使用?
感谢您提前简单的解释;)
最佳答案
This解释了你的部分问题。
'OrphanRemoval=true' Vs 'CascadeType.REMOVE'
The difference between the two settings is in the response to removing child objects from the collection pointed by parent entity.
If orphanRemoval=true is specified the removed address instance is automatically removed. If only cascade=CascadeType.REMOVE is specified no automatic action is taken since removing a relationship is not a remove operation.
关于hibernate - CascadeType.ALL、cascade = CascadeType.REMOVE 和 orphanRemoval 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27855362/