程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用JPA从集合中删除孩子大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用JPA从集合中删除孩子?

开发过程中遇到使用JPA从集合中删除孩子的问题如何解决?下面主要结合日常开发的经验,给出你关于使用JPA从集合中删除孩子的解决方法建议,希望对你解决使用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

解决方法

我在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从集合中删除孩子全部内容,希望文章能够帮你解决使用JPA从集合中删除孩子所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。