2016-09-23 2 views
0

J'ai 2 tables représentées par 2: haricots ProcessType et typologie.Hibernate HQL: Beaucoup à beaucoup

Sur la DB il y a une troisième table qui représentent les nombreux à beaucoup realtion entre ces deux tables, la table doesen't ont un haricot et est appelé process_type_typology

La table a 2 colonnes: typologie et process_type

Sur ProcessType j'ai l'attribut suivant qui représente la relation:

  @ManyToMany(fetch = FetchType.LAZY) 
      @JoinTable(name = "process_types_typology" , 
      joinColumns = {@JoinColumn(name = "process_type")} , 
      inverseJoinColumns = {@JoinColumn(name = "typology")}) 
      private Set<Typology> typologies = new HashSet<Typology>(0);    

Et puis Typologie:

  @ManyToMany(fetch = FetchType.LAZY) 
      @JoinTable(name = "process_types_typology" , 
      joinColumns = {@JoinColumn(name = "typology")} , 
      inverseJoinColumns = {@JoinColumn(name = "process_type")}) 
      private Set<ProcessType> processTypes = new HashSet<ProcessType>(0); 

Comment puis-je faire une jointure entre ces 2 tables? La troisième table n'est pas mappée donc je ne » ont idée.

Sur SQL la requête est la suivante:

from processType inner join process_types_typology ptt on pt.id_process_type=ptt_.process_type 

Répondre

0

Il suffit de se joindre à ProcessType et Typology, Hibernate prendra soin de mentionner table de relation dans le SQL généré:

from ProcessType pt join pt.typologies t 

En outre, depuis l'association est bidirectionnelle, assurez-vous de déclarer un côté à inverse.