问题:针对一张表的一个字段,想要统计其出现的不同值的次数,并封装为对象集合返回。
坑点:
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.3.5 双向关联** 双向关联意味着两个方向都维护了关联关系。这在实现一对多或多对多的关系时非常常见。 - **1.3.6 处理双向链接** 当处理...
9. 获取多个统计值: 创建 ProjectionList 并添加多个统计条件: ```java ProjectionList prolist = Projections.projectionList(); prolist.add(Projections.avg("price")); prolist.add(Projections.sum(...
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的要求,例如拥有默认构造函数、标识字段等。 - **1.2.2 映射文件** - 阐述如何创建一个XML映射文件来定义Java类和数据库表之间的映射关系。 - 包括...
- **配置Hibernate**: 提供了配置Hibernate的指导,包括程序化配置、获取SessionFactory、JDBC连接、可选配置属性(如SQL方言、外连接抓取、二进制流、二级和查询缓存、查询语言替换、Hibernate统计信息)。...
在Java的持久化框架中,Hibernate是一个非常重要的工具,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地在Java对象和数据库表之间进行数据操作。当我们需要执行一些特殊的、复杂的或者非标准的SQL...
在这个课程中,传智播客为我们深入讲解了Hibernate框架的开发知识,涵盖了从基础到进阶的多个方面。Hibernate是一款强大的对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据访问层,简化了数据库操作。接...
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. ...
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持久化对象的最佳实践。 - **POJO示例**:展示了一个简单的持久化对象示例。 - **继承...
综上,Hibernate性能调优是一个涉及多方面的系统工程,需要结合业务需求、数据库设计、代码结构等多个角度进行考虑。通过对各项配置的调整和优化,我们可以显著提升应用的运行效率,从而更好地服务于业务场景。
Example是另一种特殊的Criterion,它基于一个实体对象创建,可以用来执行基于属性值的复杂查询,支持忽略大小写和模糊匹配。例如: ```java Example exampleUser = Example.create(u).ignoreCase().enableLike...
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. ...
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. ...
使用带有自动版本化的多个会话 10.4.3. 应用程序自己进行版本检查 10.5. 会话断开连接(Session disconnection) 10.6. 悲观锁定(Pessimistic Locking) 11. Hibernate查询语言(Query Language), 即...
假设我们有一个`Salary`字段,想要计算所有员工的平均工资: ```java Query query = session.createQuery("SELECT AVG(salary) FROM Employee"); Double averageSalary = (Double) query.uniqueResult(); ``` `SUM...
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 ...
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. 映射...