Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate JPQL选择具有最大值的记录_Hibernate_Jpa_Hql_Jpql - Fatal编程技术网

Hibernate JPQL选择具有最大值的记录

Hibernate JPQL选择具有最大值的记录,hibernate,jpa,hql,jpql,Hibernate,Jpa,Hql,Jpql,我正在尝试为特定列选择具有最大值的记录,以下是我到目前为止得到的结果: select o from Order o where o.orderNumber = :orderNumber and o.version = (select max(o.version) from Order o where o.orderNumber = :orderNumber) 这似乎正在生成SQL: SELECT * FROM Order WHERE ordernumbe

我正在尝试为特定列选择具有最大值的记录,以下是我到目前为止得到的结果:

select o from Order o 
    where o.orderNumber = :orderNumber
    and o.version =
        (select max(o.version) from Order o where o.orderNumber = :orderNumber)
这似乎正在生成SQL:

SELECT *
FROM   Order
WHERE  ordernumber = :orderNumber
       AND orderversion = (SELECT Max(orderversion)
                           FROM   order
                           WHERE  ordernumber = :orderNumber);
我认为以下SQL更有效:

SELECT *
FROM   order ord
       INNER JOIN (SELECT ordernumber,
                          Max (version) AS version
                   FROM   order
                   WHERE  ordernumber = :ordernumber
                   GROUP  BY ordernumber) mx
         ON ord.ordernumber = mx.ordernumber
            AND ord.version = mx.version; 
我是否可以用JPQL来表达这一点


(对于与在特定字段上选择最大值记录相关的问题,大多数在线答案似乎表明我提供了上述JPQL…

否,无法使用HQL生成上述SQL查询。说:

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


您使用的是哪个数据库引擎?我使用Oracle和Hibernate作为我的JPA提供程序。