HQL查询返回单个最近的记录,但查看两个(不是一个)日期列

时间:2019-05-17 09:21:20

标签: hibernate hql

我有一个用于存储项目的表,并希望接收最近创建或更新的单个记录。该表具有“创建”日期列和“更新”日期列。当然,我可以轻松地分别检索具有最新创建日期的记录和具有最新更新日期的记录,然后在我的代码中比较两者。但是,部分出于性能原因,我宁愿使用一个 HQL 查询来执行此操作,而只返回一个记录。

我不认为这是一个不寻常的需求,但是Google搜索显示没有符合要求的在线示例。

顺便说一下,这是我编写的 HQL 查询,但它出错。这是我第一次尝试在名为 HQL 的查询中使用greatest()

Select m from Movement as m inner join fetch m.vessel as v where greatest(m.created, m.updated) and m.status = 'ACTIVE' and v.id = :vesselId

此致

克里斯。

1 个答案:

答案 0 :(得分:0)

  

GREATEST函数返回以下列表中的最大值或最大值   值或表达式

这是一个很好的开始,您可以使用它来对结果进行排序并将查询限制为一个结果。

Select m from Movement as m inner join fetch m.vessel as v where m.status = 'ACTIVE' and v.id = :vesselId order by CASE WHEN  m.updated is null THEN m.created ELSE greatest(m.created, m.updated) END DESC