Query query = session.createQuery("select new User"
+" (u.id,u.name) "
+" from User u ");
List list = query.list();
以上是个hibernate的hql语句.查询出来是两列!hibernate自己给起了别名了.叫col_0_0_和col_1_0_
我想自己给它起别名!但是我写成下面这样不起作用!有人知道应该怎么写么?Query query = session.createQuery("select new User"
+" (u.id as id,u.name as name) "
+" from User u ");
List list = query.list();

解决方案 »

  1.   

    有一种方法好像要在类的驱动里面设置的, 就是你的类下面的那个xml文件的里面,  具体怎么设置,你在网上找找
      

  2.   

    这个不影响你使用吧,Hibernate内部是这样处理,你管它是什么样的别名呢,反正它是自动映射到对象的属性上的的除非你使用到了聚集函数需要指定别名这样不行吗??
    Query query = session.createQuery("select u.id,u.name from User as u");
    List list = query.list();hibernate控制台输出SQL: select u.id,u.name from user u;
      

  3.   


    对啊,就是用了聚集函数啊!我用了case whenQuery 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 case when这列,现在我只能写成上面这样!这个col_2_0_是hibernate起的名.我想自己起名有办法么?
      

  4.   

    up up up up up 
      

  5.   

    Hibernate 起的别名跟你使用丝毫没有影响,这完全是 Hibernate 自己的事情,建议不要纠结于这种没有用的事情上了。
      

  6.   

    Query query = session.createNativeQuery("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 (case when u.code=1340 then 1 when u.code = 1345 then 2 else 0 end)");
                List list = query.list();
      

  7.   


    没用过  你看看这个能否解决你的相关问题
    http://www.javaeye.com/topic/29650