2012-07-31 23 views
5

Busco una forma de hacer una combinación a la izquierda con la misma tabla con hql.HQL, unir a la izquierda en la misma tabla

Es mi consulta

FROM Tvshow e 
    LEFT JOIN Tvshow e1 ON e1.num = e.num 
WHERE e1.code = '024' 
    AND e.code is not null 
    AND e.code != '024' 

Hibernate no parecen recibir el operador.

Respuesta

0

no uso de hibernación, pero, a juzgar por este ejemplo:

from Cat as cat 
inner join cat.mate as mate 
left outer join cat.kittens as kitten 

Desde esta página: http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins-forms

Parece que simplemente no lo hace un ON? Avísame si estoy equivocado y lo tomaré.

FROM Tvshow e 
    LEFT JOIN Tvshow e1 
WHERE e1.code = '024' 
    AND e.code is not null 
    AND e.code != '024' 
+0

eliminar selecto, mi error, pero el error es lo mismo –

+0

Voy a editar mi respuesta. No uso hibernate, pero estoy mirando la sintaxis. – Aushin

+0

@roberttrudel hágamelo saber si eso ayuda. Nunca he usado HQL, así que estoy tratando de adivinar a partir de la documentación. – Aushin

4

Las uniones a la izquierda en HQL solo son posibles si tiene una asociación entre dos entidades. Como su consulta impone que la entidad unida sea no nula, una unión interna haría lo mismo. Una unión interna, con la sintaxis de unión, también es posible solo si tiene una asociación entre dos entidades. Pero puede hacerlo simplemente añadiendo una prueba de la igualdad en la cláusula where:

select e from Tvshow e, Tvshow e1 
where e.num = e1.num 
and e1.code = '024' 
and e.code is not null 
and e.code != '024' 
+0

Con la sintaxis de unión interna, la línea 'y e.code no es nula' no es necesaria. –

Cuestiones relacionadas