wangyongshan 2008-09-01 11:32
浏览 273
已采纳

Hibernate 执行 case when then else end 语句出错,大家帮忙。。。

大家好,我在 HQL语句中执行 case when 语句出错,难道hibernate 不支持吗??

我的语句是:

// 功能是统计出 2 个总数结果:
// 1. 所有用户的总数
// 2. 所有年龄在20 到 30 之间的用户总数

String hql = "select count(*) as count1, count(case when age between 20 and 30 then name end) as count2 from User";

List countList = session.createQuery(hql);
if(countList != null && countList.size()>0){
Object[] countObj = (Object[]) countList.get(0);

System.out.println("count1 = "+countObj[0]+"  , count2 = "+countObj[1]);

}





但是执行结果报 unexpected token: case 错误。。。。



难道是 Hibernate 不支持这样的 case 语法吗??? 我的 Hibernate 是 3.0 的
问题补充:
奇怪的是我执行sum聚集函数就可以,但为什么 count 函数就不行

String hql = "select count(*) as count1, sum(case when age between 20 and 30 then 1 else 0 end) as count2 from User";
  • 写回答

2条回答 默认 最新

  • yumitcd 2008-09-01 15:12
    关注

    Query query = session.createSQLQuery(sql)
    你用纯sql语句执行就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题