`
逆天子军少
  • 浏览: 78782 次
  • 性别: Icon_minigender_1
  • 来自: 安庆
社区版块
存档分类
最新评论

Hibernate统计一个字段的多个可能值

    博客分类:
  • java
阅读更多
问题:针对一张表的一个字段,想要统计其出现的不同值的次数,并封装为对象集合返回。
坑点
1.hql语句中sum()返回一个long值,所以如果定义的对象实体类字段为int型,则会报错。
2.要想日期直接用<>比较,必须保持日期格式,例如2014/01/01
代码
		 Query query = this
		 .getSession()
		 .createQuery(
		 "select hzmydCkpjsjJgmc,count(hzmydCkpjsjPjjg) as totalCommentCounts,"
		 +
		 "sum(case when hzmydCkpjsjPjjg='非常满意' then 1 else 0 end) as muchSatiCounts,"
		 +
		 "sum(case when hzmydCkpjsjPjjg='满意' then 1 else 0 end) as manuSatiCounts,"
		 +
		 "sum(case when hzmydCkpjsjPjjg='未评' then 1 else 0 end) as autoSatiCounts,"
		 +
		 "sum(case when hzmydCkpjsjPjjg='基本满意' then 1 else 0 end) as basicSatiCounts,"
		 +
		 "sum(case when hzmydCkpjsjPjjg='不满意' then 1 else 0 end) as notSatiCounts "
		 + " from HzmydCkpjsj "
		 + "where hzmydCkpjsjJlrq>=:startTime and hzmydCkpjsjJlrq<=:endTime "
		 + "group by hzmydCkpjsjJgmc")
		 .setParameter("startTime", startTime)
		 .setParameter("endTime", endTime);
		 List<Object[]> list = query.list();
		 List<GroupHzmydCkpjsjByKs> resultList = new
		 ArrayList<GroupHzmydCkpjsjByKs>();
		 for (Object[] obj : list) {
		 GroupHzmydCkpjsjByKs gByKs = new GroupHzmydCkpjsjByKs();
		 gByKs.setTotalCommentCounts((Long) obj[1]);
		 gByKs.setMuchSatiCounts((Long) obj[2]);
		 gByKs.setManuSatiCounts((Long) obj[3]);
		 gByKs.setAutoSatiCounts((Long) obj[4]);
		 gByKs.setBasicSatiCounts((Long) obj[5]);
		 gByKs.setNotSatiCounts((Long) obj[6]);
		 gByKs.setHzmydCkpjsjJgmc(obj[0].toString());
		 resultList.add(gByKs);
		 }
return resultList;

当然,还有个简单的:
	Query query = this
				.getSession()
				.createQuery(
						"select new com.fxfk.entity.GroupHzmydCkpjsjByKs(hzmydCkpjsjJgmc,count(hzmydCkpjsjPjjg) as totalCommentCounts,"
								+ "sum(case when hzmydCkpjsjPjjg='非常满意' then 1 else 0 end) as muchSatiCounts,"
								+ "sum(case when hzmydCkpjsjPjjg='满意' then 1 else 0 end) as manuSatiCounts,"
								+ "sum(case when hzmydCkpjsjPjjg='未评' then 1 else 0 end) as autoSatiCounts,"
								+ "sum(case when hzmydCkpjsjPjjg='基本满意' then 1 else 0 end) as basicSatiCounts,"
								+ "sum(case when hzmydCkpjsjPjjg='不满意' then 1 else 0 end) as notSatiCounts) "
								+ " from HzmydCkpjsj "
								+ "where hzmydCkpjsjJlrq>=:startTime and hzmydCkpjsjJlrq<=:endTime "
								+ "group by hzmydCkpjsjJgmc")
				.setParameter("startTime", startTime)
				.setParameter("endTime", endTime);
		List<GroupHzmydCkpjsjByKs> resultList = query.list();
		return resultList;
1
2
分享到:
评论

相关推荐

    hibernate_reference使用指南全

    这种情况下,集合中的每个元素都是一个值类型,而不是实体类型。 - **1.3.5 双向关联** 双向关联意味着两个方向都维护了关联关系。这在实现一对多或多对多的关系时非常常见。 - **1.3.6 处理双向链接** 当处理...

    Hibernate criteria基本操作

    9. 获取多个统计值: 创建 ProjectionList 并添加多个统计条件: ```java ProjectionList prolist = Projections.projectionList(); prolist.add(Projections.avg("price")); prolist.add(Projections.sum(...

    Hibernate+中文文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate 3.2中文手册 中文文档

    - 通常会设计一个表示业务实体的类,并确保它满足Hibernate的要求,例如拥有默认构造函数、标识字段等。 - **1.2.2 映射文件** - 阐述如何创建一个XML映射文件来定义Java类和数据库表之间的映射关系。 - 包括...

    HIBERNATE doc_document_官方文档_4.3.6_final_2014_8

    - **配置Hibernate**: 提供了配置Hibernate的指导,包括程序化配置、获取SessionFactory、JDBC连接、可选配置属性(如SQL方言、外连接抓取、二进制流、二级和查询缓存、查询语言替换、Hibernate统计信息)。...

    hibernate将本地SQL查询结果封装成对象

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地在Java对象和数据库表之间进行数据操作。当我们需要执行一些特殊的、复杂的或者非标准的SQL...

    传智播客-hibernate框架开发视频第day01-day04资料

    在这个课程中,传智播客为我们深入讲解了Hibernate框架的开发知识,涵盖了从基础到进阶的多个方面。Hibernate是一款强大的对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据访问层,简化了数据库操作。接...

    HibernateAPI中文版.chm

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate3.2中文文档(chm格式)

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate说明文档

    - **Hibernate统计机制**:收集运行时性能统计数据的功能。 #### 持久化类与映射基础 - **持久化类**:介绍了定义Hibernate持久化对象的最佳实践。 - **POJO示例**:展示了一个简单的持久化对象示例。 - **继承...

    Hibernate性能调优

    综上,Hibernate性能调优是一个涉及多方面的系统工程,需要结合业务需求、数据库设计、代码结构等多个角度进行考虑。通过对各项配置的调整和优化,我们可以显著提升应用的运行效率,从而更好地服务于业务场景。

    Hibernate的Criteria用法总结

    Example是另一种特殊的Criterion,它基于一个实体对象创建,可以用来执行基于属性值的复杂查询,支持忽略大小写和模糊匹配。例如: ```java Example exampleUser = Example.create(u).ignoreCase().enableLike...

    Hibernate中文详细学习文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    Hibernate 中文 html 帮助文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate 教程

    使用带有自动版本化的多个会话 10.4.3. 应用程序自己进行版本检查 10.5. 会话断开连接(Session disconnection) 10.6. 悲观锁定(Pessimistic Locking) 11. Hibernate查询语言(Query Language), 即...

    Hibernate_query聚合函数查询.

    假设我们有一个`Salary`字段,想要计算所有员工的平均工资: ```java Query query = session.createQuery("SELECT AVG(salary) FROM Employee"); Double averageSalary = (Double) query.uniqueResult(); ``` `SUM...

    最全Hibernate 参考文档

    1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory ...

    Hibernate教程

    2.2. 第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射...

Global site tag (gtag.js) - Google Analytics