jpa将孩子从收藏中删除

我在我的Web应用程序中使用JPA而不是Hibernate。 这里有两个实体(只显示获取者):

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 children;

  @OneToMany(fetch=FetchType.EAGER, mappedBy="parent", cascade={CascadeType.ALL})
  public Collection 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

链接地址: http://www.djcxy.com/p/36991.html

上一篇: jpa removing child from collection

下一篇: Nhibernate Criteria Ignore Child Collection