@JoinColumn Kommentar forklart
1. Introduksjon
Kommentaren javax.persistence.JoinColumn markerer en kolonne for som en tilknytningskolonne for en enhetsforening eller en elementsamling.
I denne raske opplæringen viser vi noen eksempler på grunnleggende @JoinColumn bruk.
2. @OneToOne Kartleggingseksempel
De @JoinColumn kommentar kombinert med en @OneToOne kartlegging indikerer at en gitt kolonne i eierenheten refererer til en primærnøkkel i referanseenheten:
@Entity public class Office {@OneToOne (fetch = FetchType.LAZY) @JoinColumn (name = "addressId") privat adresse adresse; }
Ovennevnte kodeeksempel vil opprette en utenlandsk nøkkel som kobler til Kontor enhet med primærnøkkelen fra Adresse enhet. Navnet på den utenlandske nøkkelkolonnen i Kontor enhet er spesifisert av Navn eiendom.
3. @OneToMany Kartleggingseksempel
Når du bruker en @OneToMany kartlegging kan vi bruke kartlagt av parameter for å indikere at den gitte kolonnen eies av en annen enhet.
@Entity offentlig klasse ansatt {@Id privat Lang id; @OneToMany (fetch = FetchType.LAZY, mappedBy = "ansatt") private e-postmeldinger; } @Entity offentlig klasse E-post {@ManyToOne (fetch = FetchType.LAZY) @JoinColumn (name = "ansatte_id") privat ansatt ansatt; }
I eksemplet ovenfor, E-post (eierenheten) har en sammenføyningskolonne Ansatt ID som lagrer id-verdien og har en utenlandsk nøkkel til Ansatt enhet.
4. @JoinColumns
I situasjoner når vi ønsker å lage flere sammenføyningskolonner, kan vi bruke @JoinColumns kommentar:
@Entity public class Office {@ManyToOne (fetch = FetchType.LAZY) @JoinColumns ({@JoinColumn (name = "ADDR_ID", referatedColumnName = "ID"), @JoinColumn (name = "ADDR_ZIP", referatedColumnName = "ZIP")) }) privat adresse adresse; }
Ovennevnte eksempel vil opprette to utenlandske nøkler som peker på ID og glidelås kolonnene i Adresse enhet:
5. Konklusjon
I denne artikkelen har vi lært hvordan du bruker @JoinColumn kommentar. Vi har vist eksempler på hvordan du lager både tilknytning til enkeltpersoner og elementsamling.
Som alltid er all kildekode tilgjengelig på GitHub.