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");
List list = query.list();这是sql
select user0_.id as col_0_0_, user0_.name as col_1_0_, case when user0_.code=1340 then 1 when user0_.code=1345 then 2 else 0 end as col_2_0_ from User user0_就是说查询出三列,最后一列是case when语句出来的一列.我现在就想用这列排序!怎么办啊?order by谁啊?
比如我想排序id 就写order by u.id 那我想排序最后这列呢?是不是要起别名啊?怎么做?
解决方案 »
- 关于截取字符串的问题
- 建立j2ee 聊天室方案
- 关于Tomcat的server.xml的问题?
- 邮箱通讯录导出
- java高手我求求你们拉100分送
- 新手晋级!!! 求教排序算法的 时间复杂度与空间复杂度
- 一个JSP页面的错误,不知道哪错了,求大神来看看
- web.xml配置了applicationContext.xml,应该怎么去取已经实例化的bean?
- 如何在jbuilder里面根据wsdl生成一个web server?
- 这段小代码,那些地方出的问题,我怀疑是数据库的设置问题?来吧,欢迎来拿分!
- 求助--关于JBoss Rules(Drools )规则引擎--100分
- 关于Servlet容器的问题
定义code:public void setCode(int code) {
this.code = code; //给userNbr赋值
if (this.code == 1340) {
userNbr = 1
}
else {
//其余略,类似
}}
然后,可以用Query query = session.createQuery("select new User"
+" (u.id,u.name)"
+"from User u"
+"order by u.userNbr"
大概是因为你的User类里并没有定义你case对应的列
也就是User里需要按照7#那样定义一个属性来接着你select出来的case语句的结果你的User类本身不含有那个结果
所以你需要这样弄否则你调用的new User(,,,,)会不匹配而导致hibernate失败的你是否有注意你在select的时候
其他的都是u.XXX啊
呵呵要不你就是用SQL语句也行啊加油
祝你成功