Hibernate:Relation plusieurs-à-plusieurs bidirectionnelle

De WIKI.minetti.org
Aller à : navigation, rechercher

But

Lier deux objets A et B:

  • L'objet A contient une liste d'objets B;
  • L'objet B contient une liste d'objets A;

Au niveau de la base de données on va avoir une table de jointure qui va faire le lien entre la table de l'objet A et celle de l'objet B.

Diagramme de classe

Uml association 3.gif

Tables

TODO

Annotations

Relation de la classe A:

@ManyToMany
@JoinTable(name = "JOINTURE_AB", joinColumns = @JoinColumn(name = "A_ID"), inverseJoinColumns = @JoinColumn(name = "B_ID"))
@ForeignKey(name = "FK_JOINTURE_AB_A")
@Cascade({ CascadeType.MERGE, CascadeType.PERSIST })
private Set<B> relationB = new HashSet<>();

Relation de la classe B:

@ManyToMany(mappedBy = "relationB")
@ForeignKey(name = "FK_JOINTURE_AB_B")
@Cascade( { CascadeType.MERGE, CascadeType.PERSIST })
private Set<A> relationA = new HashSet<>();