簡體   English   中英

JPA:反向級聯刪除

[英]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時,將附加一個新的子代。

如果您希望刪除從兩面進行,則需要在ParentChild之間定義雙向關系:

// 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM