La persistance EJB 3 prend en charge la correspondance d'association bidirectionnelle un-plusieurs, la correspondance d'association unidirectionnelle un-un, et la correspondance d'association unidirectionnelle un-plusieurs.
Une annotation OneToMany est générée pour définir une association multivaleurs avec une multiplicité un-plusieurs. Une annotation ManyToOne est générée afin de définir une association à une seule valeur avec une autre classe d'entité qui a une multiplicité plusieurs-un. L'annotation JoinColumn est générée pour spécifier une colonne de jointure pour la référence qui associe les tables. Dans le cas des associations bidirectionnelles un-plusieurs, les annotations générées se présenteront comme suit :
@OneToMany(fetch=FetchType.EAGER, mappedBy="customer") public java.util.Collection<Order> getOrder() { ... }
@ManyToOne @JoinColumns({ @JoinColumn(name="cid", referencedColumnName="cid") }) public Customer getCustomer() { ... }
Les annotations générées pour les associations unidirectionnelles plusieurs-un sont similaires. Une vérification de modèle permet de s'assurer que les correspondances pour les associations un-plusieurs et les associations unidirectionnelles plusieurs-un sont correctement définies. Les références peuvent uniquement naviguer depuis les tables principales des classes du côté multivaleur vers les tables principales de classes du côté à une seule valeur.
Pour une association unidirectionnelle un-plusieurs, l'association JoinTable est générée afin de définir une table intermédiaire et des colonnes de jointures pour les deux clés de référence.
@OneToMany(fetch=FetchType.EAGER) @JoinTable( name="Customer_Order", joinColumns={ @JoinColumn(name="cid", referencedColumnName="cid") }, inverseJoinColumns={ @JoinColumn(name="oid", referencedColumnName="orderId") } ) public java.util.Collection<Order> getOrder() { ... }
Une vérification de modèle est disponible afin de vous assurer que les correspondances pour les associations unidirectionnelles un-plusieurs sont correctement définies. Les tables intermédiaires sont nécessaires pour ce type d'associations un-plusieurs.
Les associations un-plusieurs dans lesquelles la clé primaire est migrée ne sont pas prises en charge dans EJB 3.
Pour plus d'informations sur la mise en correspondances, voir Modélisation des correspondances objet/relationnel (O/R).