从HQL查询以与给定列表相同的顺序获取结果

时间:2018-07-23 12:58:24

标签: postgresql hibernate hql

我正在尝试使用HQL进行查询,该查询将保持与给定ID列表相同的顺序。我知道SQL可以实现,但是我找不到用HQL做到的任何方法(而且我无法使用本地SQL做到这一点,因为我有很多连接)

示例

fingerIds = [3,1,10,4]

SELECT p FROM People p
JOIN FETCH p.fingers f
WHERE f.id IN :fingerIds

DB:PostgreSQL 10.4 休眠:4.3.11.Final

例如。给定的ID列表:[3,1,10,4]
实际结果的顺序:[1,3,4,10]
预期结果的顺序:[3,1,10,4]

1 个答案:

答案 0 :(得分:1)

在示例中,您可以通过在查询中添加关键字FIELD来获得订单:

SELECT p FROM People p
JOIN FETCH p.fingers f
WHERE f.id IN :fingerIds 
ORDER BY FIELD(f.ID,3,1,10,4)

Ofc,您可以将数字替换为变量:fingerIds

您可以找到有关该命令here的更多信息。 返回str1,str2,str3,...列表中str的索引(位置)。如果找不到str,则返回0。