15

图表

上图是我用来记录项目位置的数据库结构的简化版本。我编写了以下 SQL 查询,它返回每个位置的当前项目库存:

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

我遇到的问题是我想将其转换为 HQL,但我还没有找到在子查询上执行 INNER JOIN 的语法,而且似乎不支持。有没有办法将上述内容转换为 HQL(或标准),或者在这种情况下我必须使用标准 SQL 查询吗?谢谢。

4

1 回答 1

15

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

请注意,HQL 子查询只能出现在 select 或 where 子句中。

您可以重写查询,使子查询成为 where 子句的一部分。在子查询中引用 l.idItem

于 2012-05-16T21:32:48.203 回答