Hibernate使用IN运算符查询,如何保持结果的参数顺序?

问题描述 投票:0回答:1

我试图保持使用 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

java hibernate sorting
1个回答
0
投票

最好遵循托马斯的建议。

无论如何在 Postgresql 中:

 select * from student where name IN ('Pekka', 'Beta', 'Gama','Alpha') 
  order by position(name::text in 'Pekka,Beta,Gama,Alpha');

您应该相应地修改您的休眠查询。我们来试试吧。

© www.soinside.com 2019 - 2024. All rights reserved.