2009-07-23 9 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; 
} 

上記のように、私は親と子の間にOneToMany-Relationを持っています。親のインスタンスを削除すると、すべての子も削除されます。これを他の方法でも有効にする方法はありますか?JPA:逆カスケード削除

Parent p = new Parent(); 
Child c = new Child(); 
p.children.add(c); 

EntityManager.persist(p); 
EntityManager.persist(c); 

EntityManager.remove (c); 

このコードは例外なく実行されますが、次回にpをロードすると新しい子が添付されます。

答えて

2

したい場合は、ParentChild間の双方向の関係を定義する必要があり、両側から仕事に削除します。

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

// in Child 
@ManyToOne 
Parent parent; 
関連する問題