2012-05-16 17 views
8

DiagramHQL: ¿Es posible realizar una UNIÓN INTERNA en una subconsulta?

El diagrama de arriba es una versión simplificada de la estructura de la base de datos que utilizo para registrar ubicaciones de elementos en el tiempo. Escribí la siguiente consulta SQL que devuelve el inventario de artículos actual de cada lugar:

select * 
from ItemLocationLog l 
inner join 
(select g.idItemLocationLog, max(g.dateTime) as latest 
from ItemLocationLog g 
group by g.idItem) 
as i 
on l.idItem = i.idItem and l.dateTime = i.latest 

El problema que estoy teniendo es que quiero convertir a que HQL, pero no he encontrado la sintaxis para realizar una INNER JOIN en una subconsulta, y parece que esto no es compatible. ¿Hay alguna manera de convertir lo anterior a HQL (o un Criterio) o tendré que usar una consulta SQL estándar en este caso? Gracias.

Respuesta

9

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-subqueries

Tenga en cuenta que las subconsultas HQL pueden ocurrir sólo en las cláusulas SELECT ni dónde.

Puede volver a escribir la consulta para que la subconsulta sea parte de la cláusula where. Hacer referencia al l.idItem en la subconsulta

+0

¿Cómo sería esto? –

+0

@CarlG Bueno sin pruebas y con el ejemplo de la pregunta ... algo a lo largo de las líneas de: 'seleccionar l de ItemLocationLog l donde l.dateTime = ( select max (g.dateTime) de ItemLocationLog g donde g.idItem = l.idItem ) ' – Arkaine55

Cuestiones relacionadas