2009-06-10 14 views
34

Diciamo che ho due tabelle (A, B) come:registrazione senza associazione in HQL

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

Ho anche loro entità. Voglio scrivere un HQL in modo che il set di risultati sarà come (dove Ac = Bc):

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

Dal on clausole non sono supportati da hibernate sono bloccato e non so come scrivere query .

risposta

44

è necessario utilizzare il cross join notazione:

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

Naturalmente non v'è alcun modo per implementare outer join in questo modo, per cui si potrebbe avere qualche problema se questo è il vostro caso.

Per il caso analogo con criteri si riferiscono a: hibernate-criteria-joining-table-without-a-mapped-association

+0

@ II-BHIMA posso usare il join esterno sinistro in questo secenario – dom

1

se si vuole fare outer join si può fare sub query e gestire OR (funziona per me). è rendere la query più complessa e peggiore performante ma funziona :-)

0

se sia la tabella sono correlati tra loro tramite chiave esterna, allora si può provare questo:

let:

A {id (chiave primaria), a, c} B {id (chiave esterna), b, c}

definire una variabile di tipo genitore (A) con setter e getter in pojo della classe B. Dopo aver scritto query in questo modo. let '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 
Problemi correlati