`
逆天子军少
  • 浏览: 78988 次
  • 性别: 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 3.5.0-final core reference 中文pdf

    - **单向Set-based的关联**:讨论了如何实现一个实体对另一个实体的单向引用,通常使用Set集合来表示多个关联实体。 - **使关联工作**:介绍了一些技巧和注意事项,确保关联关系正确地在数据库中建立和维护。 - **值...

    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 ...

Global site tag (gtag.js) - Google Analytics