我需要在Hibernate条件查询中编写以下SQL代码:
SELECT
a.*
FROM
objekt a,
--Filter on max version
(
SELECT
ueb_uuid,
MAX(version) AS version
FROM
objekt
GROUP BY
ueb_uuid
) b
--concat tables
WHERE
a.version = b.version
AND a.ueb_uuid = b.ueb_uuid;
在这种情况下,唯一的显示停止项是选择了2列和max函数的子查询
以下是我尝试的方法
Subquery<Integer> subquery = query.subquery(Integer.class);
Root<ObjektEntity> subqueryRoot = subquery.from(ObjektEntity.class);
subquery.select(builder.max(subqueryRoot.get(ObjektEntity_.version)));
subquery.where(builder.equal(root.get(AnotherEntity_.objekt),objekt.get(ObjektEntity_.uuid) ));
query.where(builder.equal(root.get(ObjektEntity_.VERSION),subquery));
如何创建一个具有两列选择和两个不同返回值/列/数据类型的max函数的子查询
1条答案
按热度按时间r1zk6ea11#
在Hibernate 6.1之前,这是不可能编写的,但是您的特定情况可以重写为这种形式的查询:
您可以使用JPA标准来制定它。