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条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大