Jpa使用Page和Pageable分页遇到的问题及解决
报错代码
@Query(value = "select t.* from goods t where t.type =:type ", nativeQuery = true)
Page<Goods> findAllByType(String type,Pageable pageable);报错信息
org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final] at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptio Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) from Table t where t.type ='A' com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.25.jar:8.0.25] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
分析
看报错信息得知 是SQL出了问题 并且定位在 near '*)
但是把SQL放到DataGrip里执行 发现可以查出数据

那么这是什么原因呢?
经过分析Hibernate打印的SQL
select count(t.*) from .....
发现使用page分页会有一个查询所有数据的条数的操作,用于计数TotalElements

在dataGrip里执行SQL

复刻出了问题
解决方法
把原SQL select t.* from .... 里select t.* 改成select *就可以了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring Security+Spring Data Jpa如何进行安全管理
这篇文章主要介绍了Spring Security+Spring Data Jpa如何进行安全管理,帮助大家更好的理解和学习Spring Security框架,感兴趣的朋友可以了解下2020-09-09
MyBatis-Plus 中 typeHandler 的使用实例详解
本文介绍了在MyBatis-Plus中如何使用typeHandler处理json格式字段和自定义typeHandler,通过使用JacksonTypeHandler,可以简单实现将实体类字段转换为json格式存储,感兴趣的朋友跟随小编一起看看吧2024-10-10
关于JVM垃圾回收的java.lang.ref.Finalizer问题
这篇文章主要介绍了关于JVM垃圾回收的java.lang.ref.Finalizer问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-05-05
MyBatis批量插入的五种方式小结(MyBatis以集合方式批量新增)
本文主要介绍了MyBatis批量插入的五种方式小结(MyBatis以集合方式批量新增),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-01-01
springboot整合rabbitmq实现订单超时取消案例分析
本文介绍了如何使用SpringBoot和RabbitMQ实现订单超时取消功能,通过配置TTL队列和死信交换机,可以管理订单的超时逻辑,实际应用中,可以通过数据库标记订单状态或手动确认机制来防止订单被错误取消2025-01-01


最新评论