@JoinColumn Annotation Explained

@JoinColumn Annotation Explained

1. introduction

L'annotationjavax.persistence.JoinColumn marque une colonne comme colonne de jointure pour une association d'entités ou une collection d'éléments.

Dans ce rapide didacticiel, nous allons montrer quelques exemples d'utilisation de base de@JoinCloumn.

2. Exemple de mappage@OneToOne

L'annotation@JoinColumn combinée à un mappage@OneToOne indique qu'une colonne donnée dans l'entité propriétaire fait référence à une clé primaire dans l'entité de référence:

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

L'exemple de code ci-dessus créera une clé étrangère reliant l'entitéOffice à la clé primaire de l'entitéAddress. Le nom de la colonne de clé étrangère dans l'entitéOffice est spécifié par la propriéténame.

3. Exemple de mappage@OneToMany

Lors de l'utilisation d'un mappage@OneToMany, nous pouvons utiliser le paramètremappedBy pour indiquer que la colonne donnée appartient à une autre entité.

@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;
}

Dans l'exemple ci-dessus,Email (l'entité propriétaire) a une colonne de jointureemployee_id qui stocke la valeur de l'id et a une clé étrangère pour l'entitéEmployee.

image

4. @JoinColumns

Dans les situations où nous voulons créer plusieurs colonnes de jointure, nous pouvons utiliser l'annotation@JoinColumns:

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

L'exemple ci-dessus créera deux clés étrangères pointant vers les colonnesID etZIP dans l'entitéAddress:

image

5. Conclusion

Dans cet article, nous avons appris à utiliser l'annotation@JoinColumn. Nous avons montré des exemples sur la manière de créer à la fois une association d'entité unique et une collection d'éléments.

Comme toujours, tout le code source est disponibleover on GitHub.