Annotation @JoinColumn expliquée

1. Introduction

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

Dans ce rapide tutoriel, nous montrerons quelques exemples d' utilisation basique de @JoinColumn .

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ètre mappedBy 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 jointure employee_id qui stocke la valeur d'id et a une clé étrangère pour l' entité Employee .

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 colonnes ID et ZIP dans l' entité Address :

5. Conclusion

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

Comme toujours, tout le code source est disponible sur sur GitHub.