[英]JPA: Reverse cascading delete
@Entity
public class Parent {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
int id;
@OneToMany(cascade=CascadeType.REMOVE)
List<Item> children = new ArrayList<Child>();
}
@Entity
public class Child {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
int id;
}
如您在上面看到的,我在父母與孩子之間有一個OneToMany-Relation。 如果刪除父實例,則所有子實例也將被刪除。 是否有一種方法可以使此方法反過來工作呢?
Parent p = new Parent();
Child c = new Child();
p.children.add(c);
EntityManager.persist(p);
EntityManager.persist(c);
EntityManager.remove (c);
這段代碼毫無例外地運行,但是下次我加載p時,將附加一個新的子代。
如果您希望刪除從兩面進行,則需要在Parent
和Child
之間定義雙向關系:
// in Parent
@OneToMany(cascade=CascadeType.REMOVE, mappedBy="parent")
List<Item> children = new ArrayList<Child>();
// in Child
@ManyToOne
Parent parent;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.