hibernate中使用case when count sum 查询sql 出错

问题描述

StringBuilder sb = new StringBuilder("select obj.eid, obj.employee.ename, obj.employee.enumber, count(obj.isBeLate) as 迟到次数, count(case when obj.lateReson='迟到' then obj.lateReson end) as 迟到");sb.append(",count(case when obj.lateReson='旷工' then obj.lateReson end) as 旷工,");sb.append("count(case when obj.lateReson='病假' then obj.lateReson end) as 病假,");sb.append("count(case when obj.lateReson='事假' then obj.lateReson end) as 事假,");sb.append("count(case when obj.lateReson='丧假' then obj.lateReson end) as 丧假,");sb.append("count(case when obj.lateReson='婚假' then obj.lateReson end) as 婚假,");sb.append("count(case when obj.lateReson='产假' then obj.lateReson end) as 产假,");sb.append("count(case when obj.lateReson='公假' then obj.lateReson end) as 公假,");sb.append("count(case when obj.lateReson='年假' then obj.lateReson end) as 年假,");sb.append("sum(points) as 扣分,");sb.append("sum(fine) as 罚金 ");sb.append(" from Attendance obj where month(obj.modifyTime) =");sb.append("datepart(mm,getdate()) and obj.isBeLate = '是' group by obj.eid, obj.employee.ename, obj.employee.enumber");getSession().createQuery(sb.toString()).list();上面的代码就不解释了, Attendance employee 两个对象一对多关联关系。 <many-to-one name="employee" lazy="false" cascade="save-update" class="com.crm.employee.domain.Employee" fetch="select"><column name="eid"></column></many-to-one><set name="setAttendance" table="attendance" cascade="all" inverse="true"><key column="eid" /><one-to-many class="com.crm.employee.domain.Attendance" /></set>此sql无法执行,但是在sql中是可以正确执行的,求解。。。。

解决方案

hibernate 不支持 count + case,改成 sum +case即可

时间: 2024-08-12 09:29:18

hibernate中使用case when count sum 查询sql 出错的相关文章

Java Hibernate中使用HQL语句进行数据库查询的要点解析_java

一.实体对象查询 实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替.这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些问题需要注意,就是查询获取数据不是目的,需要考虑的是如何编写出高效的查询语句,这才是讨论的重点. 1.N+1问题 (1)什么是N+1问题在刚听到这个名词时疑惑可能是有的,以前根本就没有听过N+1问题,那么它是指什么呢?N+1指的是一张表中有N条数据,那么在获取这N条数据时会产生N+

Hibernate中hql如何使用聚合函数sum和group by组合查询!

问题描述 Hibernate中hql如何使用聚合函数sum和group by组合查询! 背景:有一张记录各个班级的成绩表: 目的:需要使用hql查询出各个班级对应的总分: 表对应的类: public class One_Class implements Serializable { private String address; private String subject; private String classes; private int score; //get和set方法省略: //

使用hibernate的sum()查询时,新生成的sum()属性如何对应POJO类的属性?

问题描述 [size=medium]我用hibernate逆向工程生成了一个表stock对应POJO类.表的字段有name(vchar),value(number),id(vchar),主键为id对应POJO类的属性为name(String),value(double),id(String).现在我需要做查询 select id,sum(value) from stock group by id但是hibernate查询时一般都是from stock where ... 即查询的属性可以对应到P

hibernate中带查询条件的分页

所谓分页,从数据库中分,则是封装一个分页类.利用分页对象进行分页. 但,分页往往带查询条件.   分页类的三个重要数据:[当前页码数],[数据库中的总记录数],[每页显示的数据的条数] 原理:select * from  [表名] where   [字段名]  like   ['%条件%']    limit  [开始查询的索引],[每页显示的数据]   带查询条件的分页分两步 (1)第一步:查询出符合条件的数据的总条数  ---->select count(*) from [表名] where

java-Java Hibernate中查询取值

问题描述 Java Hibernate中查询取值 Sql语法是这样的:![图片说明] 用Hibernate查询的语法不知道有没有问题呢? 还有最后一个问题: 我查询后的值存在query里面了, 我又要怎么取值呢? 求大家帮帮忙 解决方案 你那ID写里面就是死值了,要么用"?"代替,要么用 "+ +" 抱起来,哪有你那么写的 解决方案二: query.list()吧,然后看返回值是什么类型就用什么类型去接收就OK了.推荐看看这个先,里面有你想要的内容:http://z

图片-String类型在Hibernate中Get()查询的时候 对象为null

问题描述 String类型在Hibernate中Get()查询的时候 对象为null 解决方案 1--1001对应的数据有没 2--这个表是否和这个Studen对应了映射关系 检查下 解决方案二: 是怎么执行的,要么你数据库没配置好,要么就是数据库没数据,再要么就是连接没获取到. 解决方案三: 弄好了 数据库里面的数据有空格

MySQL中case when 语句条件查询的方法

case 计算条件列表并返回多个可能结果表达式之一. case 具有两种格式: 简单 case 函数将某个表达式与一组简单表达式进行比较以确定结果. case 搜索函数计算一组布尔表达式以确定结果. 两种格式都支持可选的 else 参数. 语法 简单 case 函数: case input_expression     when when_expression then result_expression         [ ...n ]     [         else else_resu

关于Hibernate中数据查询问题,ListAll

问题描述 关于Hibernate中数据查询问题,ListAll 这是是我的方法,红线是传过来的值,然后就是死循环? 解决方案 这个是调用的方法,请大神们,指点!!! 解决方案二: 你可以查看我的博客:http://blog.csdn.net/u014427391/article/details/50621111 解决方案三: 你可以查看我的博客:http://blog.csdn.net/u014427391/article/details/50621111 解决方案四: 你可以查看我的博客:ht

在hibernate中命名查询,想要查询全部字段可以,但要查询某两个字段就不行了,能否解决呢。

问题描述 在hibernate中命名查询,想要查询全部字段可以,但要查询某两个字段就不行了,能否解决呢.<sql-queryname="select_5"><![CDATA[selectname,agefrompersonlimit3]]><returnalias="s"class="cn.itcast.bean.Person"/></sql-query>下面是构造函数packagecn.itcas