您好我想在HQL中排序
ORDER BY IF g.groupAdminId=:adminid THEN 1 ELSE 0 END ASC
但是它不起作用,我希望所有实体都是用户管理员的第一个,我该怎样才能实现这个目标?
答案 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 docs中case
的更多信息:
针对您的特定问题(在其他用户之前有管理员)我建议进行两次查询并将这两个列表合并为Java。
还有其他方法,但我不喜欢其中任何一种: