Vysvetlenie anotácie @JoinColumn
1. Úvod
Anotácia javax.persistence.JoinColumn označí stĺpec ako stĺpec spojenia pre priradenie entity alebo kolekciu prvkov.
V tomto rýchlom návode si ukážeme niekoľko príkladov základných @JoinColumn použitie.
2. @Jeden na jedného Príklad mapovania
The @JoinColumn anotácia kombinovaná s a @Jeden na jedného mapovanie naznačuje, že daný stĺpec v entite vlastníka odkazuje na primárny kľúč v referenčnej entite:
@Entity verejná trieda Office {@OneToOne (fetch = FetchType.LAZY) @JoinColumn (name = "addressId") súkromná adresa adresy; }
Vyššie uvedený príklad kódu vytvorí cudzí kľúč spájajúci Kancelária subjekt s primárnym kľúčom z Adresa subjekt. Názov stĺpca cudzieho kľúča v Kancelária subjekt je určený názov nehnuteľnosť.
3. @OneToMany Príklad mapovania
Pri použití a @OneToMany mapovanie môžeme použiť mappedBy parameter označujúci, že daný stĺpec vlastní iná entita.
@Entity public class Zamestnanec {@Id private Long id; @OneToMany (fetch = FetchType.LAZY, mappedBy = "zamestnanec") súkromné zoznamy e-mailov; } @Entity verejná trieda Email {@ManyToOne (fetch = FetchType.LAZY) @JoinColumn (name = "employee_id") súkromný zamestnanec; }
Vo vyššie uvedenom príklade Email (entita vlastníka) má stĺpec spojenia zamestnanecké ID ktorý ukladá id hodnotu a má cudzí kľúč k Zamestnanec subjekt.

4. @JoinColumns
V situáciách, keď chceme vytvoriť viac stĺpcov spojenia, môžeme použiť znak @JoinColumns anotácia:
@Entity verejná trieda Office {@ManyToOne (fetch = FetchType.LAZY) @JoinColumns ({@JoinColumn (name = "ADDR_ID", referencedColumnName = "ID"), @JoinColumn (name = "ADDR_ZIP", referencedColumnName = "ZIP")) }) adresa súkromnej adresy; }
Vyššie uvedený príklad vytvorí dva cudzie kľúče smerujúce na ID a PSČ stĺpce v Adresa subjekt:

5. Záver
V tomto článku sme sa naučili, ako používať @JoinColumn anotácia. Ukázali sme príklady, ako vytvoriť združenie jednej entity aj kolekciu prvkov.
Ako vždy, všetok zdrojový kód je k dispozícii na GitHub.