2015-07-17 23 views
5

Üç tablo A, B ve C sahip ve her üç tablo ve bazı diğer özellikler yabancı anahtarları olan bir eşleştirme tablosu A_B_C (en X, Y diyelim). Şimdi, bu üç tabloyu java sınıfımda temsil etmek istiyorum.Hazırda beklemede tek bir tabloyu kullanarak üç tabloya nasıl katılırsınız?

Bu tablolarda arasındaki ilişki birçok biridir. Bu yüzden, Java sınıflarımın böyle bir şey görmesini istiyorum.

@Entity(name = "A") 
@Table(name = "A") 
public class A { 

     ??? Hibernate Annotation or query 
     Map<B,List<C>> BMapC; 
} 

@Entity(name = "B") 
@Table(name = "B") 
public class B { 
     ... 
} 

@Entity(name = "C") 
@Table(name = "C") 
public class C { 
     ... 
} 

Bunun için Hazırda Bekletme Ek Açıklamalarını kullanmanın mümkün olup olmayacağını bilmek isterim. Değilse, özel bir sorgu yazıp değişkeni doldurmanın bir yolu var mı?

+0

Bunun iki kopya veri ile sonuçlanacağına inanıyorum? Daha fazla –

+0

ayrıntılı olabilir mi? Evet bu veri modelinde yinelenen veri olarak sonuçlanır. Ancak kullanım durumumuz için sorun değil. –

+0

Sadece bir yan not: '@ Entity' veya' @ Table' için 'name = ...' seçeneğine ihtiyacınız yoktur. –

cevap

8

Hazırda bekletme, bu tür senaryolar için kullanıma hazır hiçbir ek açıklama sunmuyor.

@Entity 
@Table(name = "A_B_C") 
public class name = "A_B_C" { 

    @ManyToOne(cascade=CascadeType.ALL) 
    @JoinColumn(name = "FK_B", nullable = false) 
    private B b; 

    @ManyToOne(cascade=CascadeType.ALL) 
    @JoinColumn(name = "FK_C", nullable = false) 
    private C c; 

    //Getters, Setters, other attributes etc. 
} 

Ve bu nesnenin bir liste var A: Bu senaryo sadece A_B_C bir sınıf kurup ele alınabilir

@Entity 
@Table(name = "A") 
public class name = "A" { 

      @OneToMany(cascade=CascadeType.ALL) 
      @JoinColumn(name = "FK_A", nullable = false) 
      private Set<A_B_C> abc; 

      //Getters, Setters, other attributes etc. 
} 

Ve programlı B,C bir haritaya ayarlayın abc dönüştürün.

İlgili konular