我想用给定的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 )
最好的方法是什么?
答案 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。还有一些与数据库无关的解决方案。