0

質問があります。私はEclipselinkでJPAを使用しており、関係があります:

Table A ---< Table AB >---- Table B

class A {    
@OneToMany(mappedBy = "a")
private List<AB> abList    
}

class AB {    
@ManyToOne(fetch = FetchType.LAZY)
private A a;    
@ManyToOne(fetch = FetchType.LAZY)
private B b;    
}

class B {    
@OneToMany(mappedBy = "b")
private List<AB> abList;
}

ジョインテーブルABによるAとBのManyToMany関係です。ここで、テーブル A からレコードを削除し、テーブル AB (結合テーブル) と B テーブルからもレコードをカスケード削除したいと考えています。

ただし、B からは、テーブル A の他のレコードに接続されていないもののみ ( many-to-manyA と B の関係)。

CascadeType または orphanremoval を適切に設定するにはどうすればよいですか?

4

2 に答える 2

0

Hibernate を使用している場合は、orphanRoval=true にする必要があります。

その後、これを試してください: a (クラスは A) を削除する必要があると仮定して、次のようにします:

 for (AB ab : a.getAbList()) {
    B b = ab.get();
    if (b.getAbList().size()==1) {
        em.remove(b);
   }
   em.remove(ab);
 }
 em.remove(a);

この助けを願っています

于 2013-06-10T08:37:27.287 に答える