Hibernate动态订单

wut*_*aer 0 hql

嗨,我想在HQL中排序

ORDER BY IF g.groupAdminId=:adminid THEN 1 ELSE 0 END ASC
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我希望拥有用户首先管理员的所有实体,我怎样才能实现这一目标?

Luk*_*pec 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
Run Code Online (Sandbox Code Playgroud)

有关caseHQL 文档的更多信息:

对于您的特定问题(在其他用户之前有管理员),我建议进行两次查询并将这两个列表组合在一起.

还有其他方法,但我不喜欢它们中的任何一个: