Hibernate ManyToMany Annotasyonu Kullanımı
14-11-2015public class Belge { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "BelgeKayitId") private int id; @ManyToMany(cascade = CascadeType.ALL) @JoinTable( name="Belge_FirmaOzellik", joinColumns = @JoinColumn( name="BelgeID"), inverseJoinColumns = @JoinColumn( name="FirmaID") ) private List<FirmaOzellikBilgileri> firmaOzellikBilgileri; } public class FirmaOzellikBilgileri { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int firmaId; }
@JoinTable annotasyonunda joinColumns kısmı FirmaOzellikBilgileri entity'nin DEĞİL, bulunduğu entity'in yani Belge entity'nin PRIMARY KEY değerini, yani id değerini temsil eder. id değerleri veritabanında Belge isimli tablonun BelgeKayitId isimli sütunda tutular. Fakat @JoinColumn(name="BelgeID") diyerek, bu id değerinin, Belge_FirmaOzellik tablosunun BelgeID isimli sütunda tutulmasını sağlarız. @JoinColumn(name="BelgeID") yerine istediğimiz sütun adını verebiliriz: @JoinColumn(name="adfsfmsdfmsaf"). Bu şekilde kullanıldığı zaman Belge tablosunun primary key değerleri yani id değerleri Belge_FirmaOzellik tablosundaki adfsfmsdfmsaf isimli sütunda tutulmuş olur.
Aynı mantıkla inverseJoinColumns = @JoinColumn( name="FirmaID")
Belge_FirmaOzellik tablosunda FirmaOzellikBilgileri entity'nin primary key değerlerinin yani id değerlerin FirmaID isimli sütunda tutulacağını ifade eder.