Hibernate动态订单

时间:2012-02-13 14:45:57

标签: hql

您好我想在HQL中排序

ORDER BY IF g.groupAdminId=:adminid THEN 1 ELSE 0 END ASC

但是它不起作用,我希望所有实体都是用户管理员的第一个,我该怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:8)

我不相信可以将命名参数放在where子句之外。

可以根据表达式订购:

from User U
order by case
  when U.group.name = 'Admin' then 0
  when U.group.name = 'Superuser' then 1
  else 2
end asc

有关HQL docscase的更多信息:

针对您的特定问题(在其他用户之前有管理员)我建议进行两次查询并将这两个列表合并为Java。

还有其他方法,但我不喜欢其中任何一种: