我有一个实体:
class User{
Long id;
String group_name;
User head;
}
我必须按顺序订购用户: 按group_name排序,如果用户首先是头部(头部比head.id = id)。
我制作HQL查询:select u from User u order by u.group_name, case when u = head then 0 else 1;
但它没有用;
结果我希望: (group_name:user)
如何进行正确的HQL查询?
答案 0 :(得分:0)
这是HQL查询:
"select u.group_name from User u, User.head head where head.id=u.id order by u.group_name"
由于User类中没有列名,因此我无法从用户那里获得您想要的内容,以便您可以包含在选择部分中。
答案 1 :(得分:0)
我会在没有分组的情况下执行此操作,方法是使用case语句创建第二个属性,您可以通过该属性来确定某人是否是某个组的负责人。例如:
select name,group_name,case when head.id is not null then 1 else 0 end as h
from User
order by group_name asc,h desc
正如你所看到的,我使用了一个case语句来创建一个属性h,当某人是某个组的头时,该属性h取值为1,否则为0。然后你可以按照降序进行订购,这意味着每个组的负责人都会在该组的其他成员之前列出。