2012-09-29 10 views
32

Obtengo List<Strings> al ejecutar una consulta. Esto se debe pasar a otra consulta de EN valores de cláusula. Cómo pasarlos en HQL?lista de pases a la cláusula IN en HQL o SQL?

Podemos convertir List en Array y puede pasarlo, eso no es un problema.

Finalmente, debe pasar la lista en List<String> o Array o String forma a la EN cláusula.

Respuesta

66
from AUTOS a where a.model in (select m.model from MODELS m) 

o

Query query1 = session.createQuery("select s.id from Salary s where s.salary < 50000 AND s.salary > 49980"); 
Query query2 = session.createQuery("from Employee e where e.id in (:ids)").setParameterList("ids", query1.list()); 
query2.list(); 
+0

¿Esto también funciona con IDs compuestas? – rexdefuror

+2

Esta es una buena respuesta, sin embargo, no funciona para una colección vacía. – Jagger

+0

¿es posible hacerlo con 1 consulta? como en sql con sub consultas? – tObi

3

Sé que ha pasado un tiempo y he estado tratando de pasar el valor de una consulta diferente como queryParameter, también puede pasar establecer o colecciones en la cláusula en HQL con 'elementos()' - aquí hay un ejemplo simple de dicho uso: Hibernate query: does a Set contains a certain Object?

+0

Esto hará lo mismo ... gracias por responder incluso fue tarde ... útil para los demás ... –

Cuestiones relacionadas