2012-04-18 7 views
16

Sto iniziando a imparare JPA, e hanno attuato un esempio con interrogazione JPA, sulla base della seguente SQL nativo che ho provato in SQL Server:Come creare una query JPA con LEFT OUTER JOIN

SELECT f.StudentID, f.Name, f.Age, f.Class1, f.Class2 
FROM Student f 
    LEFT OUTER JOIN ClassTbl s ON s.ClassID = f.Class1 OR s.ClassID = f.Class2 
WHERE s.ClassName = 'abc' 

Da quanto sopra SQL ho costruito la seguente query JPQL:

SELECT f FROM Student f LEFT JOIN f.Class1 s; 

Come potete vedere, mi manca ancora la condizione OR s.ClassID = f.Class2 dalla mia query originale. La mia domanda è, come posso inserirla nel mio JPQL?

+0

possibile duplicato di [Come creare una query JPA con LEFT OUTER JOIN] (http://stackoverflow.com/questions/4750371/how-to-make-a-jpa-query-with-left-outer-join) – Perception

risposta

27

Scrivi questo;

SELECT f from Student f LEFT JOIN f.classTbls s WHERE s.ClassName = 'abc' 

Poiché l'entità studente ha una relazione da uno a molti con l'entità ClassTbl.

10

Se si dispone di entità A e B, senza alcuna relazione tra loro e non v'è strettamente 0 o 1 B per ogni A, si potrebbe fare:

select a, (select b from B b where b.joinProperty = a.joinProperty) from A a 

Questo ti darebbe un oggetto [] {a, b} per un singolo risultato o List < Object [] {a, b} > per più risultati.

+0

Questa è l'unica risposta che funziona con entità non correlate – 11thdimension