spring jpa 自带page @Query 出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring jpa 自带page @Query 出错相关的知识,希望对你有一定的参考价值。

参考技术A jpa会在执行page方法时自动生成count,而在使用的时候回出错,原因在于他生成的sql存在问题。
跳过复杂的debug追踪直接来到他的核心count生成地方。

可以看到此方法是一个废弃的方法 他说明DeclaredQuery#deriveCountQuery 但是在此处实现为

他会判断当前方法(@Query注解的方法)是否存在countQuery 如果存在则使用它 否则调用上边的方法。
而上方方法进行了一些正则匹配 最终匹配的结果会是 select count(where) 从而出现错误异常。
解决方案则为
1、注解中填写 countQuery 写完整的sql
2、注解中填写 countProjection 会在上方createCountQueryFor中替换成填写的字段 即 count($countProjection)
2、 在表名后面添加一个别名 指向一个字段(偏门)
建议使用方案一、二

以上是关于spring jpa 自带page @Query 出错的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data JPA之删除和修改

spring JPA 动态查询

JPA自定义模糊查询并将查询结果分页

Spring JPA:使用分页查找多个 ID

spring data jpa中的page对象带到jsp页面遍历问题

spring-data-jpa @Query 支持正则表达式语法吗?