我搜索了答案,但无法正确找到答案。有什么区别CascadeType.ALL
, 级联 =CascadeType.REMOVE
, orphanRemoval
当我们设置FetchType.EAGER
on @OneToMany
关系?
有一次我在删除记录时遇到问题。我用过以下
@OneToMany(cascade = CascadeType.ALL, mappedBy = "companyEntity", fetch = FetchType.EAGER)
Set<EmployeeEntity> employeeEntities;
当我尝试删除员工记录时,它没有向我显示任何异常,也没有删除记录。但当我改变了CascadeType.ALL
to CascadeType.REMOVE
然后它就开始工作了。
为什么它不能与CascadeType.ALL
而是与CascadeType.REMOVE
?
感谢您提前提供简单的解释;)
This http://nsinfra.blogspot.in/2013/03/jpa-20-hibernate-orphanremoval-true.html解释了你问题的一部分。
'OrphanRemoval=true' 与 'CascadeType.REMOVE'
两种设置之间的区别在于对删除的响应
父实体指向的集合中的子对象。
如果指定了orphanRemoval=true,则删除的地址实例是
自动删除。如果仅指定cascade=CascadeType.REMOVE
由于删除关系不是一个自动操作,因此不会采取任何自动操作
删除操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)