当前位置: 首页 > 面试题库 >

JPA CascadeType.ALL不会删除孤儿

章乐逸
2023-03-14
问题内容

我在使用具有以下映射的JPA删除孤立节点时遇到问题

@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")
private List<Bikes> bikes;

我遇到了孤立角色挂在html" target="_blank">数据库周围的问题。

我可以使用org.hibernate.annotations.Cascade特定于注释的Hibernate标记,但是显然我不想将解决方案绑定到Hibernate实现中。

编辑 :似乎JPA 2.0将包括对此的支持。


问题答案:

如果将它与Hibernate一起使用,则必须显式定义批注CascadeType.DELETE_ORPHAN,该批注可与JPA结合使用CascadeType.ALL

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

执行顺序

  1. 获取要删除的主行
  2. 获取子元素
  3. 删除所有子元素
  4. 删除主行
  5. 闭门会议

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

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


 类似资料:
  • 问题内容: 我在使用带有以下映射的JPA删除孤立节点时遇到问题 我遇到了孤立角色挂在数据库周围的问题。 我可以使用特定于注释的Hibernate标记,但是显然我不想将解决方案绑定到Hibernate实现中。 编辑:似乎JPA 2.0将包括对此的支持。 问题答案: 如果将它与Hibernate一起使用,则必须显式定义批注,该批注可与JPA结合使用。 如果你不打算使用,则必须先明确删除子元素,然后再删

  • 最近,我问了一个关于堆栈溢出的非常类似的问题,这是另一个问题的重复。在另一个问题中,我采用了一种变通方法,解决了我的问题。现在,这一次解决方案不起作用,所有其他提到的解决方案都不起作用。此外,链接到第一个线程的其他线程的所有解决方案都不起作用。 这是我最初的问题: SQLServerException:无效的列名 这就是重复: Hibernate列名问题 我已经检查了链接和相关部分右侧的主题,但找

  • 我试图收集以下信息,以便在删除父实体时自动删除子实体。似乎最常见的方法是使用这三种注释中的一种:或或。 我对第三个有点困惑:,因为教义官方留档中关于这个的解释非常少),我希望有人能证实我从我的研究中收集和理解的以下信息网络和经验... 它有什么作用? == 应用于收集(因此在或关系中) == ORM中的实施 可与、或 == 这个策略有点棘手,但可能非常强大和快速。(参考官方文件,但尚未阅读更多解释

  • 客户端版本:version.info{Major:“1”,Minor:“0”,GitVersion:“V1.0.4”,GitCommit:“65D28D5FD12345592405714C81CD03B9C41D41D9”,GitTreesteat:“Clean”} 服务器版本:version.info{Major:“1”,Minor:“2”,GitVersion:“V1.2.0”,GitComm

  • 本文向大家介绍nhibernate 全部删除孤立项,包括了nhibernate 全部删除孤立项的使用技巧和注意事项,需要的朋友参考一下 示例 保存/更新/删除对象时,请检查关联并保存/更新/删除找到的所有对象。除此之外,当一个对象从关联中删除并且不与另一个对象(孤立的)关联时,也将其删除。

  • 问题内容: 有没有人解决此问题:https : //hibernate.atlassian.net/browse/HHH-9663? 我也面临着类似的问题。当我在两个实体之间创建单面(无反向引用)一对一关系并将孤立删除属性设置为true时,将引用设置为null后,引用的对象仍在数据库中。 这是示例域模型: 我目前正在通过手动删除孤儿来解决此问题。 问题答案: 级联仅对从 父级 传播到 子级的 实体