Query query = session.createQuery("select new User"
+" (u.id,u.name,"
+"(case when u.code=1340 then 1 when u.code = 1345 then 2 else 0 end)"
+")"
+" from User u order by col_2_0_");
List list = query.list();
上面代码能看懂吧!我最后order by col_2_0_显然不能这么写.要给我(case when u.code=1340 then 1 when u.code = 1345 then 2 else 0 end)这列起别名.但是我是new User(... , ... , ..)这么写的,怎么能起别名啊!我写成下面这样不起作用啊
Query query = session.createQuery("select new User"
+" (u.id,u.name,"
+"(case when u.code=1340 then 1 when u.code = 1345 then 2 else 0 end)"
+ as c"
+")"
+" from User u order by c");
List list = query.list();
Query query = session.createQuery( "select new User "
+ " (u.id,u.name, "
+ "(case when u.code=1340 then 1 when u.code = 1345 then 2 else 0 end) "
+ ") "
+ " from User u order by u.code ");
List list = query.list(); 这样可以的吧。
select 后不用new Object,而是写字段。取结果用Object[] obj = (Object[])list.get(i);
+ "(case when u.code=1340 then 1 when u.code = 1345 then 2 else 0 end) "
+ ") "
中的括号去掉,改为:select u.id,u.name, (case when u.code=1340 then 1 when u.code = 1345 then 2 else 0 end) from User u order by u.code;