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

使用JPA从集合中删除孩子

阎昌勋
2023-03-14
问题内容

我在Web应用程序中通过Hibernate使用JPA。这是两个实体(仅显示吸气剂):

class Child {
  private Parent parent;

  @ManyToOne(optional=false)
  @JoinColumn(name="parent_id", referencedColumnName="parent_id", nullable=false, updatable=false)
  public Parent getParent() {
    return parent;
  }
}

class Parent {
  private Collection<Child> children;

  @OneToMany(fetch=FetchType.EAGER, mappedBy="parent", cascade={CascadeType.ALL})
  public Collection<Child> getChildren() {
    return children;
  }
}

如您所见,ParentChild称为“一对多”。

现在,我需要加载一个Parent实例,删除部分或全部子代并保存更改。以下是对我不起作用的代码:

Parent p = entityManager.find(Parent.class, 12345L); // load entity
p.getChildren().clear(); // remove all children
entityManager.merge(p); // try to save

在上面的示例中未删除子实体。现在,我必须手动entityManager.remove()为每个孩子打电话。

有没有更简单的方法来管理子代?

请注意,我不想使用特定于Hibernate的功能,只能使用纯JPA。


问题答案:

对于JPA 2.0你可以设置
orphanRemoval=true@OneToMany

对于JPA 1.0,应使用特定于hibernate的注释。这是@Cascade注释(而不是cascade属性),其值为

@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})

Hibernate 3.5+实现JPA 2.0



 类似资料:
  • 问题内容: 我想使用gson删除具有空集合或空值的属性。 我打印json,我有这个: 例如,对于该json,我不想拥有集合aiAvisos,有一种方法可以将其从json中删除。我实际上正在处理很多集合,在这里我展示了一个集合,我确实需要从json中删除它们。 我需要这样的东西: 我尝试将集合设置为null,我检查了文档,也没有方法… 请任何建议。 非常感谢阅读本文的人! 问题答案: 遵循的步骤:

  • 问题内容: 我有一个(尽管我猜这个问题也适用于其他集合)对象。据我了解,当文档讨论删除映射时,那么它就是从哈希表中删除条目,即不一定破坏实际对象。如果该表中唯一剩余的对该对象的引用,那么该对象会被垃圾回收吗? 如果我这样做了,并且表中的那些对象没有在其他任何地方引用,它们会被垃圾回收吗? 最快的方法是实际从表中删除所有条目,同时销毁那些对象。 问题答案: 是的,如果集合是最后引用这些对象的地方,则

  • 无法从外壳中删除集合, 集合可用并且我的 php 脚本正在访问它的东西(选择|更新) 但当我使用: 它给了我一个错误:

  • 问题内容: 当 Person 对象包含使用 @ElementCollection 存储的数据时,我在解决如何使用JPA 批量删除 Person 对象方面遇到麻烦。任何有关如何执行此操作的想法将不胜感激。 我现在正在做的是,它因外键约束错误而失败: 引起原因:java.sql.SQLException:违反完整性约束:外键无动作;FKCEC6E942485388AB表:PERSON_EMAIL 如果

  • 本文向大家介绍如何使用Java从集合中删除多个文档?,包括了如何使用Java从集合中删除多个文档?的使用技巧和注意事项,需要的朋友参考一下 在Java中,com.mongodb.client.MongoCollection接口提供了方法deleteMany()。使用此方法,您可以一次从集合中删除多个文档,为此,您需要通过指定删除条件的过滤器。 示例 输出结果

  • 我知道如何。。。 删除单个文档。 但我不知道如何删除Mongoose收藏中的所有文档。我想在用户单击按钮时执行此操作。我假设我需要向某个endpoint发送AJAX请求并让该endpoint进行删除,但我不知道如何在endpoint处处理删除。 在我的例子中,我有一个集合,我想在用户单击按钮时删除所有文档。 api/datetime/index.js API/datetime/datetime.c