Java JPA CascadeType.ALL不删除孤立项
我在使用带有以下映射的JPA删除孤立节点时遇到问题
@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")private List<Bikes> bikes;
我遇到了孤立角色挂在数据库周围的问题。
我可以使用org.hibernate.annotations.Cascade
特定于注释的Hibernate标记,但是显然我不想将解决方案绑定到Hibernate实现中。
编辑:似乎JPA 2.0将包括对此的支持。
回答:
如果将它与Hibernate一起使用,则必须显式定义批注CascadeType.DELETE_ORPHAN
,该批注可与JPA结合使用CascadeType.ALL
。
如果你不打算使用Hibernate
,则必须先明确删除子元素,然后再删除主记录,以避免出现任何孤立记录。
执行顺序
- 获取要删除的主行
- 获取子元素
- 删除所有子元素
- 删除主行
- 闭门会议
在JPA 2.0中,你现在可以使用选项orphanRemoval = true
@OneToMany(mappedBy="foo", orphanRemoval=true)
以上是 Java JPA CascadeType.ALL不删除孤立项 的全部内容, 来源链接: utcz.com/qa/423791.html