jpa复杂查询groupby失败的原因以及替代方法-20190824
问题
1 jpa specification 复杂查询,拼接group by 时,分页会触发select count (*),导致指定select * from table group by 字段,造成语法错误;
2 对于oracle number 类型,虽然JavaBean中定义啦 intege,但是单独查会造成无法转型bigdecimal错误
解决方法
1 用hibernate的entityManager 构建
private EntityManager entityManager
public List<ViewEmployeeBase> getCheckboxInfo(String evaluateYear) {
// criteriaBuilder用于构建CriteriaQuery的构建器对象
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
// criteriaQuery包含查询语句的各个部分,如where、max、sum、groupBy、orderBy等
CriteriaQuery<ViewEmployeeBase> criteriaQuery = criteriaBuilder.createQuery(ViewEmployeeBase.class);
// 获取查询实例的属性,select * from books
Root<ViewEmployeeBase> root = criteriaQuery.from(ViewEmployeeBase.class);
// 相当于select type,max(price) maxPrice,sum(price) sumPrice from books中select 与
// from之间的部分
criteriaQuery.multiselect(root.get("position").as(String.class));
// where type = 1
criteriaQuery.where(criteriaBuilder.equal(root.get("id").get("evaluateYear"), evaluateYear));
// group by type
criteriaQuery.groupBy(root.get("position"));
// criteriaQuery拼成的sql是select type,max(price) maxPrice,sum(price) sumPrice from
// books group by type;查询出的列与对象BookInfo的属性对应
// 记录当前sql查询结果总条数
// List<ViewEmployeeBase> counts = entityManager.createQuery(criteriaQuery).getResultList();
// sql查询对象
TypedQuery<ViewEmployeeBase> createQuery = entityManager.createQuery(criteriaQuery);
return createQuery.getResultList();
// 设置分页参数
}
jpa复杂查询groupby失败的原因以及替代方法-20190824的更多相关文章
- php大文件上传失败的原因及解决方法
为什么上传大文件总是失败,上传小文件就没有问题.关于PHP大文件上传失败的原因及解决方法如下: 第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定 ...
- php ci框架中载入css和js文件失败的原因及解决方法
在将html页面整合到ci框架里面的时候,载入css和js失败. 原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用ba ...
- docker swarm 集群进入某节点容器失败的原因及解决方法
今日在自己的docker swarm 测试环境中,想进入某个节点的容器去查看下,结果进入容器失败,并且报了如下错误信息: [root@worker1 ~]# docker exec -it 9a6f6 ...
- Windows 2008驱动安装失败的原因及解决方法
希望这些内容能够帮助各位朋友顺利地在Windows Server 2008系统环境下安装使用好各种设备的驱动程序! 寻找安装失败原因 一般来说,当我们将目标设备的驱动安装光盘正确放置到Windows ...
- 宏晶STC单片机使用STC-ISP串口烧录失败的原因与解决方法汇总
官方网址: http://www.stcisp.com/q_and_a_stcisp.html 个人小结 芯片:STC12C5A60S2 封装:LQFP-48 晶振大小:SD22.1184M 最小系统 ...
- SQL查询速度慢的原因分析和解决方案
SQL查询速度慢的原因分析和解决方案 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建 ...
- SQLServer查询速度慢的原因
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存 ...
- Oracle查询速度慢的原因总结
Oracle查询速度慢的原因总结 查询速度慢的原因很多,常见如下几种:1,没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2,I/O吞吐量小,形成了瓶颈效应.3,没有创建计算列导致 ...
- JPA criteria 查询:类型安全与面向对象
参考:https://my.oschina.net/zhaoqian/blog/133500 一.JPA元模型概念,及使用 在JPA中,标准查询是以元模型的概念为基础的.元模型是为具体持久化单元的受管 ...
随机推荐
- Dubbo从入门到实战:实战篇
一.加入 zookeeper 作为注册中心 在前面的案例中,我们没有使用任何的注册中心,而是用一种直连的方式进行的.但是,实际上很多时候,我们都是使用 dubbo + zookeeper 的方式,使用 ...
- Newtonsoft.Json 序列化踩坑之 IEnumerable
Newtonsoft.Json 序列化踩坑之 IEnumerable Intro Newtonsoft.Json 是 .NET 下最受欢迎 JSON 操作库,使用起来也是非常方便,有时候也可能会不小心 ...
- du 配合sort查看文件夹大小
du -s * | sort -nr | head 选出排在前面的10个 du -s * | sort -nr | tail 选出排在后面的10个
- C# MediaPlayer
using System.Windows.Media; using Newtonsoft.Json; using System.ComponentModel; namespace ConsoleApp ...
- Linux软件安装——服务管理
Linux软件安装——服务管理 摘要:本文主要学习了Linux中有关服务管理的知识. 什么是服务 服务一般是放置在后台运行的一个或多个进分程,为用户或系统提供某项特定的服务,有些是系统服务,有些则是独 ...
- 1-函数返回值-return详解及应用-1
return 返回值 可以是:数字.字符串.布尔.函数.对象(元素\[]\{}\null).未定义 <script> function fn1(){return 100;} aler ...
- HTTP协议解析之Cookie
" Cookie与身份认证." 提到HTTP协议,不可避免地都会牵涉到Cookie,可以说,Cookie作为HTTP的重要组成部分,促进了HTTP协议的发展壮大. HTTP协议如果 ...
- git本地忽略
添加本地忽略文件 git update-index --assume-unchanged 忽略的文件名 恢复本地忽略文件 git update-index --no-assume-unchanged ...
- linux系统管理-输入输出
目录 linux系统管理-输入输出 参数传递xargs linux系统管理-输入输出 重定向 将原本要输出到屏幕上的数据信息,重新定向到指定的文件中 运行程序,或者输入一个命令:默认打开4个文件描述符 ...
- 《Python自动化测试九章经》
Python是当前非常流行的一门编程语言,它除了在人工智能.数据处理.Web开发.网络爬虫等领域得到广泛使用之外,他也非常适合软件测试人员使用,但是,对于刚入行的测试小白来说,并不知道学习Python ...