博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用spring data jpa 心得
阅读量:6616 次
发布时间:2019-06-25

本文共 1117 字,大约阅读时间需要 3 分钟。

hot3.png

JpaSpecificationExecutor.findAll(new Specification
(){ public Predicate toPredicate(Root
root, CriteriaQuery
query, CriteriaBuilder builder) {}})

最近一直使用springside 4 (spring data jpa(hibernate) + springMVC ) 今天遇到非常棘手的问题。 使用findAll 分页的时候

如果调用root.fetch().....会报异常aused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list ........  select count(*) from ....

查一查百度原因解释是使用count 聚合函数不能调用fetch。

要查询指定的的对象,但owner没有关联目前选择的集合或者对象。

 然后看到这篇帖子

Paged findAll(…) with Specification does not work with join fetch

The way I've handled this is to use the CriteriaQuery.getResultType() method to check whether the query's projection is Long or the class the Specification is operating on. If the resultType is Long, the query is a count and no join fetches should be used. If the resultType is the class the Specification is operating on, it's a normal query and fetch joins can be used.

如上是一楼沙发的回答。 

判断结果类型是否是long类型 来决定是否fetch

转载于:https://my.oschina.net/guansheng/blog/94677

你可能感兴趣的文章
利用一点机器学习来加速你的网站
查看>>
中国域名现状:应用水平较低,安全仍存隐患
查看>>
Java中HashMap的原理分析
查看>>
React Native入门项目与解析
查看>>
云计算:大势所趋 你准备好了么?
查看>>
数据资产的运营商--天市大数据交易平台
查看>>
中小企业如何成功转型跨境电商
查看>>
java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
查看>>
《ANTLR 4权威指南》——2.5 语法分析树监听器和访问器
查看>>
02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译...
查看>>
这些国货,在阿里平台上被美国剁手党抢疯了
查看>>
《Excel 职场手册:260招菜鸟变达人》一第 2 招 常用快捷键Windows与Mac对照
查看>>
《Greenplum企业应用实战》一第1章 Greenplum简介1.1 Greenplum的起源和发展历程
查看>>
开源世界已成围城:成本让企业蜂拥而来,也让企业退缩转投
查看>>
《Python编程快速上手——让繁琐工作自动化》——1.4 在变量中保存值
查看>>
想改进你的卷积神经网络?看看这14种设计模式!
查看>>
安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(六)
查看>>
[LeetCode]--100. Same Tree
查看>>
阿里蒋晓伟谈流计算和批处理引擎Blink,以及Flink和Spark的异同与优势
查看>>
快速掌握Redis——第二招:安装
查看>>