【问题标题】:Get results from HQL query with the same order as given list以与给定列表相同的顺序从 HQL 查询中获取结果
【发布时间】:2018-07-23 12:58:23
【问题描述】:

我正在尝试使用 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

数据库:PostgreSQL 10.4 休眠:4.3.11.Final

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

【问题讨论】:

  • 您如何获得给定的列表顺序?这在您的代码中是明确的,还是来自其他列顺序?
  • 传给查询了,再次检查问题,我已经编辑并添加了一个例子

标签: postgresql hibernate hql


【解决方案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)

你可以用你的变量:fingerIds替换数字

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多