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.


$config[zx-auto] not found$config[zx-overlay] not found