使用Hibernate / JPA以给定顺序按给定ID选择一组对象的最佳方法是什么

时间:2011-01-14 10:08:04

标签: java hibernate jpa

我想用给定的id选择一些对象,但也按给定的顺序选择,如:

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

但是以与参数中的ids相同的方式排序。

E.g。在mysql中可以这样做:

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

最好的方法是什么?

2 个答案:

答案 0 :(得分:4)

Hibernate会保留它不知道的函数,并在编写时将它们传递给SQL,因此,假设您使用的是MySQL,您是否尝试使用'ORDER BY FIELD'子句编写HQL?有点像...

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

答案 1 :(得分:1)

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