2009-06-10 9 views
34

Können sagen, ich habe zwei Tabellen (A, B) wie:ohne Verein in HQL

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

Ich habe auch ihre Einheiten. Ich möchte eine HQL schreiben, so dass die Ergebnismenge sein wird (wobei Ac = Bc):

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

Da on Klauseln nicht durch Hibernate unterstützt Ich bin stecken und ich weiß nicht, wie die Abfrage schreiben .

Antwort

44

Sie haben die Cross-Join-Notation verwenden:

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

Natürlich gibt es keine Möglichkeit Outer-Joins auf diese Weise zu implementieren, so dass Sie einige Probleme haben könnte, wenn das Ihr Fall ist.

Für den analogen Fall mit Kriterien beziehen sich auf: hibernate-criteria-joining-table-without-a-mapped-association

+0

@ II-bhima kann ich äußere Verknüpfung in diesem secenario verwenden links – dom

1

, wenn Sie äußere Verknüpfung machen möchten, können Sie Sub-Abfrage machen und verwalten ODER-Verknüpfung (es funktioniert für mich). ist es die Abfrage komplexer und schlimmsten performant machen aber funktioniert :-)

0

beide, wenn die Tabelle miteinander über Fremdschlüssel verbunden sind, dann können Sie dies versuchen:

let:

A {id (Primärschlüssel), a, c} { B id (Fremdschlüssel), b, c}

eine Variable vom Typ Mutter definieren (A) mit setter und Getter in pojo.after der B-Klasse, die man schreiben kann query auf diese Weise. lassen '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