JPA CascadeType.ALL不会删除孤儿

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将包括对此的支持。


守着一只汪
浏览 767回答 3
3回答

慕盖茨4494581

如果您将它与Hibernate一起使用,则必须明确定义注释CascadeType.DELETE_ORPHAN,该注释可与JPA结合使用CascadeType.ALL。如果您不打算使用Hibernate,则必须先明确删除子元素,然后删除主记录以避免任何孤立记录。执行顺序获取要删除的主行获取子元素删除所有子元素删除主行关闭会议使用JPA 2.0,您现在可以使用选项orphanRemoval = true@OneToMany(mappedBy="foo",&nbsp;orphanRemoval=true)

叮当猫咪

只是@OneToMany(cascade = CascadeType.ALL, &nbsp;mappedBy = "xxx", fetch = FetchType.LAZY, orphanRemoval = true)。删除targetEntity = MyClass.class,效果很好。

MM们

如果您使用的是JPA 2.0,则现在可以使用注释的orphanRemoval=true属性@xxxToMany来删除孤立。实际上,CascadeType.DELETE_ORPHAN已经在3.5.2-Final中弃用了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java