@JoinColumn Annotation erklärt

@ JoinColumn Annotation Explained

1. Einführung

Die Annotationjavax.persistence.JoinColumn markiert eine Spalte als Verknüpfungsspalte für eine Entitätszuordnung oder eine Elementsammlung.

In diesem kurzen Tutorial zeigen wir einige Beispiele für die grundlegende Verwendung von@JoinCloumn.

2. @OneToOne Zuordnungsbeispiel

Die Annotation@JoinColumn in Kombination mit einer Zuordnung@OneToOne gibt an, dass eine bestimmte Spalte in der Eigentümerentität auf einen Primärschlüssel in der Referenzentität verweist:

@Entity
public class Office {
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "addressId")
    private Address address;
}

Das obige Codebeispiel erstellt einen Fremdschlüssel, der die EntitätOfficemit dem Primärschlüssel der EntitätAddressverbindet. Der Name der Fremdschlüsselspalte in der EntitätOfficewird durch die Eigenschaftnameangegeben.

3. @OneToMany Zuordnungsbeispiel

Bei Verwendung einer@OneToMany-Zuordnung können wir den ParametermappedBy verwenden, um anzuzeigen, dass die angegebene Spalte einer anderen Entität gehört.

@Entity
public class Employee {

    @Id
    private Long id;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "employee")
    private List emails;
}

@Entity
public class Email {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "employee_id")
    private Employee employee;
}

Im obigen Beispiel hatEmail (die Eigentümerentität) eine Verknüpfungsspalteemployee_id, in der der ID-Wert gespeichert ist, und einen Fremdschlüssel für die EntitätEmployee.

image

4. @JoinColumns

In Situationen, in denen wir mehrere Verknüpfungsspalten erstellen möchten, können wir die Annotation@JoinColumnsverwenden:

@Entity
public class Office {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name="ADDR_ID", referencedColumnName="ID"),
        @JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP")
    })
    private Address address;
}

Im obigen Beispiel werden zwei Fremdschlüssel erstellt, die auf die SpaltenID undZIP in der EntitätAddress verweisen:

image

5. Fazit

In diesem Artikel haben wir gelernt, wie die Annotation@JoinColumnverwendet wird. Wir haben Beispiele gezeigt, wie Sie sowohl eine einzelne Entitätszuordnung als auch eine Elementsammlung erstellen.

Wie immer ist der gesamte Quellcodeover on GitHub verfügbar.