2009-07-23 7 views
0
@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; 
} 

Wie Sie oben sehen können, habe ich eine OneToMany-Relation zwischen Eltern und Kind. Wenn ich eine Elterninstanz lösche, werden auch alle Kinder gelöscht. Gibt es eine Möglichkeit, dies auch umgekehrt zu erreichen?JPA: Rückwärtskaskadieren löschen

Dieser Code läuft ohne Ausnahme, aber wenn ich p das nächste Mal lade, ist ein neues Kind angehängt.

Antwort

2

Wenn Sie möchten, löscht von beiden Seiten zu arbeiten, müssen Sie eine bidirektionale Beziehung zwischen Parent und Child definieren:

// in Parent 
@OneToMany(cascade=CascadeType.REMOVE, mappedBy="parent") 
List<Item> children = new ArrayList<Child>(); 

// in Child 
@ManyToOne 
Parent parent;