2012-04-18 13 views
16

estoy empezando a aprender la APP, y han implementado un ejemplo con consulta JPA, con base en el siguiente SQL nativo que probé en SQL Server:Cómo crear una consulta JPA con combinación externa izquierda

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' 

De el SQL anterior he construido la siguiente consulta JPQL:

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

Como se puede ver, todavía carecen de la condición de mi OR s.ClassID = f.Class2 búsqueda original. Mi pregunta es, ¿cómo puedo ponerlo en mi JPQL?

+0

posible duplicado de [Cómo hacer una consulta JPA con IZQUIERDA UNIÓN EXTERIOR] (http://stackoverflow.com/questions/4750371/how-to-make-a-jpa-query-with-left-outer-join) – Perception

Respuesta

27

Escribir esto;

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

Debido a que su entidad de Estudiante tiene una relación de Uno a Muchos con la entidad ClassTbl.

10

Si tiene entidades A y B sin ningún tipo de relación entre ellos y no es estrictamente 0 ó 1 B para cada una, se podría hacer:

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

Esto le daría un Objeto [] {a, b} para un único resultado o List < Objeto [] {a, b} > para obtener resultados múltiples.

+0

Esta es la única respuesta que funciona con entidades no relacionadas – 11thdimension

Cuestiones relacionadas