的情况下
问题描述:
我有一个实体HQL顺序:的情况下
class User{
Long id;
String group_name;
User head;
}
我必须得到有序的用户为了: ORDER BY组名,如果用户是头部,然后第一个(头部不仅仅意味着head.id = ID)。
我使HQL查询:select u from User u order by u.group_name, case when u = head then 0 else 1;
但它不工作;
在结果,我想有: (GROUP_NAME:用户)
- G1约翰(头)
- G1詹姆斯
- G1亚当
- G2布莱恩(头)
- g2 Martin
如何进行正确的HQL查询?
答
我会做这个没有分组,通过使用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
正如你可以看到,我使用的情况下,语句来创建属性为h,它取值1,当有人是一组头,否则返回0。然后你可以下降,这意味着每个组的头部被列在组的其他成员之前。
不清楚的问题,给予更多的细节,并给予表结构,如果可能的话。 – 2014-10-07 11:26:41
http://stackoverflow.com/questions/9262413/hibernate-dynamic-order – Stefan 2014-10-07 11:36:49
尝试“当u.id = head.id” – 2014-10-09 11:03:38