【问题标题】:What is the best way of selecting a set of objects by given ids in given order with Hibernate/JPA使用Hibernate / JPA按给定顺序按给定ID选择一组对象的最佳方法是什么
【发布时间】:2011-01-14 10:08:04
【问题描述】:

我想选择一些具有给定 id 且按给定顺序的对象,例如:

<named-query name="getQuestionsByIds">
    <query><![CDATA[from Question q where q.id in (:ids)]]></query>
</named-query>

但排序方式与参数中的 id 相同。

例如在 mysql 中可以这样做:

SELECT * FROM table ORDER BY FIELD( id, 23, 234, 543, 23 )

最好的方法是什么?

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    Hibernate 保留它不知道的函数并在编写时将它们传递给 SQL,因此,假设您使用的是 MySQL,您是否尝试使用“ORDER BY FIELD”子句编写 HQL?比如……

    select q from Question q where q.id in (:ids) ORDER BY FIELD(id, :ids)
    

    【讨论】:

    • 抱歉没有回复,有很多事情要做。刚刚测试了它,它可以工作。谢谢!最终的版本是: select q from Question q where q.id in (:ids) ORDER BY FIELD(id, :ids) 这样你就可以稍微编辑你的答案,使其更完整。
    • 只是一些额外的提示.. 检查列表 os ids 是否为空并且在这种情况下不运行查询,hibernate 将生成无效查询并因此产生语法异常。
    【解决方案2】:

    阅读一些更新的,我希望有用的,关于这个主题的信息read this answer 与相同的问题相关,但使用的是 postgres。还有一些与数据库无关的解决方案。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2020-05-29
      • 1970-01-01
      相关资源
      最近更新 更多