Looking for jpa Answers? Try Ask4KnowledgeBase
Looking for jpa Keywords? Try Ask4Keywords

jpaPlusieurs à plusieurs cartographie


Introduction

Un mappage ManyToMany décrit une relation entre des entités où les deux peuvent être associées à plusieurs instances l'une de l'autre et est définie par l'annotation @ManyToMany .

Contrairement à @OneToMany où une colonne de clé étrangère dans la table de l'entité peut être utilisée, ManyToMany nécessite une table de jointure, qui mappe les entités entre elles.

Paramètres

Annotation Objectif
@TableGenerator Définit un générateur de clé primaire pouvant être référencé par nom lorsqu'un élément generator est spécifié pour l'annotation GeneratedValue
@GeneratedValue Fournit la spécification de stratégies de génération pour les valeurs des clés primaires. Il peut être appliqué à une propriété de clé primaire ou à un champ d'une entité ou à une super-classe mappée conjointement avec l'annotation Id.
@ManyToMany Spécifie la relation entre les entités Employé et Projet, de sorte que de nombreux employés puissent travailler sur plusieurs projets.
mappedBy="projects" Définit une relation bidirectionnelle entre Employee et Project
@JoinColumn Spécifie le nom de la colonne qui fera référence à l'entité à considérer comme propriétaire de l'association
@JoinTable Spécifie la table dans la base de données qui tiendra l'employé à projeter des relations à l'aide de clés étrangères

Remarques

  • @TableGenerator et @GeneratedValue sont utilisés pour la création automatique d'ID à l'aide du générateur de table jpa.
  • L'annotation @ManyToMany spécifie la relation entre les entités Employé et Projet.
  • @JoinTable spécifie le nom de la table à utiliser en tant que table de jointure jpa à plusieurs mappages entre Employee et Project en utilisant name = “employee_project”. Cela est fait car il n'existe aucun moyen de déterminer la propriété d'un mappage jpa plusieurs à plusieurs, car les tables de base de données ne contiennent pas de clés étrangères pour faire référence à une autre table.
  • @JoinColumn spécifie le nom de la colonne qui fera référence à l'entité à considérer en tant que propriétaire de l'association, tandis que @inverseJoinColumn spécifie le nom du côté inverse de la relation. (Vous pouvez choisir n'importe quel côté pour être considéré comme propriétaire. Assurez-vous juste que ces côtés en relation). Dans notre cas, nous avons choisi Employee comme propriétaire, de sorte que @JoinColumn se réfère à la colonne idemployee dans la table de jointure employee_project et que @InverseJoinColumn fait référence à idproject qui est inversé par rapport au mappage plusieurs à plusieurs.
  • L'annotation @ManyToMany dans l'entité de projet montre une relation inverse et utilise donc mappedBy = projects pour faire référence au champ dans l'entité Employee.

L'exemple complet peut être référencé ici

Plusieurs à plusieurs cartographie Exemples Liés