我在我的web-app中使用JPA而不是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 children; @OneToMany(fetch=FetchType.EAGER, mappedBy="parent", cascade={CascadeType.ALL}) public Collection getChildren() { return children; } }
正如你看到的Parent
和Child
涉及爲「一到多」。
現在我需要加載一個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。
問候, 安德烈
可能重複: //www.stackoverflow.com/questions/306144/jpa-cascadetype-all-does-not-delete-orphans) – 2010-09-17 21:40:18