我试图保持使用 IN 运算符的查询的顺序结果与输入参数相同。
我有这样的疑问
List<String> students = Arrays.asList("Leo", "Tom", "Meg", "Barbara");
Query q = session.createQuery("from Students where name in :names");
q.setParameterList("names", students);
当我运行查询时,结果按学生的 id(或任何主键)排序,但我想保留参数的顺序(因此“Leo”、“Tom、“Meg”和“芭芭拉”最后),有办法做到这一点吗?
我正在使用 Hibernate 5.6.15
最好遵循托马斯的建议。
无论如何在 Postgresql 中:
select * from student where name IN ('Pekka', 'Beta', 'Gama','Alpha')
order by position(name::text in 'Pekka,Beta,Gama,Alpha');
您应该相应地修改您的休眠查询。我们来试试吧。