【问题标题】:JPA: Remove Child EntitiesJPA:删除子实体
【发布时间】:2015-05-04 06:21:38
【问题描述】:

我有一个实体(例如:文档)在其他 4 个实体中用作子实体(在父母中使用 @OneToMany 和 @JoinTable)。我没有使用双向映射。我的要求是删除孩子(即文档),我有两种方法可以做到这一点,一种方法是获取 4 个父母,从他们身上删除孩子并更新它们。其次,使用原生查询(使用 jdbcTemplate)从 4 个连接表中删除条目并删除子表。

还有其他更简单的方法吗?

【问题讨论】:

    标签: spring hibernate jpa eclipselink openjpa


    【解决方案1】:

    创建一个包含 Document 作为成员和用户 JPA 继承的抽象基类 --> http://en.wikibooks.org/wiki/Java_Persistence/Inheritance 应该可以通过一个查询获得文档的所有用户。 比删除所有引用应该相对容易。

    不要在自动删除内容背后施展魔法。这就是文件的费用。

    【讨论】:

      【解决方案2】:

      添加孤立删除(即,从父对象的集合中删除子对象)。要启用它,您需要添加

      @OneToMany(orphanRemoval=true)

      在拥有实体中。

      【讨论】:

      • Yogesh,这与我提到的第一个选项相同。有了这个,我必须拉出所有 4 个父母,这是昂贵的数据库交易。
      • Yogesh,我有单向映射,我不会删除父级。我只想使用它的 PK 删除孩子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2018-12-03
      相关资源
      最近更新 更多