为了账号安全,请及时绑定邮箱和手机立即绑定

JPA CascadeType.ALL不会删除孤儿

JPA CascadeType.ALL不会删除孤儿

守着一只汪 2019-08-26 11:12:24
JPA CascadeType.ALL不会删除孤儿我在使用带有以下映射的JPA删除孤立节点时遇到问题@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")private List<Bikes> bikes;我遇到了挂在数据库周围的孤立角色的问题。我可以使用注释org.hibernate.annotations.CascadeHibernate特定标记,但显然我不想将我的解决方案绑定到Hibernate实现。编辑:似乎JPA 2.0将包括对此的支持。
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

如果您将它与Hibernate一起使用,则必须明确定义注释CascadeType.DELETE_ORPHAN,该注释可与JPA结合使用CascadeType.ALL

如果您不打算使用Hibernate,则必须先明确删除子元素,然后删除主记录以避免任何孤立记录。

执行顺序

  1. 获取要删除的主行

  2. 获取子元素

  3. 删除所有子元素

  4. 删除主行

  5. 关闭会议

使用JPA 2.0,您现在可以使用选项orphanRemoval = true

@OneToMany(mappedBy="foo", orphanRemoval=true)


查看完整回答
反对 回复 2019-08-26
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

只是@OneToMany(cascade = CascadeType.ALL,  mappedBy = "xxx", fetch = FetchType.LAZY, orphanRemoval = true)

删除targetEntity = MyClass.class,效果很好。


查看完整回答
反对 回复 2019-08-26
?
MM们

TA贡献1886条经验 获得超2个赞

如果您使用的是JPA 2.0,则现在可以使用注释的orphanRemoval=true属性@xxxToMany来删除孤立。

实际上,CascadeType.DELETE_ORPHAN已经在3.5.2-Final中弃用了。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 763 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信