我试图通过Sping Boot JPA Repository从我的表中获取一些行,但MySQL在JPA生成的查询中一直显示语法错误。
MySQL似乎只支持limit y offset x
,而不是offset x rows fetch first y rows only
(我正在测试第一个页面,page: 0
和page_size: 1
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 'offset 0 rows fetch first 1 rows only' at line 1
字符串
这是我的仓库
@Repository
public interface MyRepository extends JpaRepository<MyEntity, Integer> {
ArrayList<MyEntity> findById(Integer id, Pageable pageable);
}
型
以及JPA生成的查询
select ... from myTable c1_0 order by c1_0.id desc offset 0 rows fetch first 1 rows only
型
也许,我仍然在使用JDBC驱动程序的SQL
下面是pom.xml
文件中的一个部分
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
型
这里是application.properties
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.database=mysql
型
我怎么才能摆脱这个?
1条答案
按热度按时间zpgglvta1#
问题是我的项目正在使用来自Spring云配置服务器的配置。
spring.jpa.properties.hibernate.dialect
配置值为org.hibernate.dialect.H2Dialect
。这就是为什么JPA不断生成不能完全与MySQL一起使用的SQL查询的原因(在我的例子中:offset 和 limit)。使用VM选项将它改回
org.hibernate.dialect.MySQLDialect
解决了我的问题。