2009-06-10 7 views
34

Disons que j'ai deux tables (A, B) comme:sans inscription association HQL

A {id, a, c} 
B {id, b, c} 

J'ai aussi leurs entités. Je veux écrire un HQL afin que le jeu de résultats sera comme (où Ac = Bc):

(a1, b1, c1) 
(a2, b2, c2) 
(a3, b3, c3) 
... 

Depuis on clauses ne sont pas pris en charge par mise en veille prolongée, je suis coincé et je ne sais pas comment écrire la requête .

Répondre

44

Vous devez utiliser la jointure croisée notation: il n'y a aucun moyen de

from A as table_a , B as table_b 
where table_a.c = table_b.c 

Bien entendu mettre en œuvre les jointures externes de cette manière, vous pourriez avoir des ennuis si c'est votre cas.

Pour le cas analogue aux critères se rapportent à: hibernate-criteria-joining-table-without-a-mapped-association

+0

@ II-BHIMA puis-je utiliser la jointure externe gauche dans ce secenario – dom

1

si vous voulez faire vous joindre extérieur peut faire sous requête et gérer l'opération OU (cela fonctionne pour moi). il est rendre la requête plus complexe et le pire, mais fonctionne :-) performant

0

si les deux le tableau sont liés les uns aux autres par clé étrangère alors vous pouvez essayer ceci:

let:

A {id (clé primaire), a, c} B {id (clé étrangère), b, c}

définir une variable de type parent (A) avec setter et getter dans la classe pojo.after que vous pouvez écrire une requête de cette façon. laissez-le 'AA'

select tbl_b.a,tbl_a.a,tbl_b.b,tbl_a.b,tbl_b.c,tbl_a.c from B tbl_b inner join tbl_b.AA tbl_b