You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

H2数据库SQL语法错误求助:JPQL分页查询报limit语法错误

问题分析与解决

你的问题根源在于H2数据库的语法兼容配置:Spring Data JPA结合Pageable自动生成了带LIMIT的SQL语句,但当前H2实例的运行模式不支持这种MySQL风格的分页语法,因此触发语法错误。

具体解决方法

  • 启用H2的MySQL兼容模式(推荐)
    修改你的H2数据库连接URL,添加;MODE=MySQL参数,示例配置如下:

    jdbc:h2:mem:your-db-name;MODE=MySQL;DB_CLOSE_DELAY=-1
    

    开启该模式后,H2会兼容MySQL的语法规则,Spring Data JPA自动生成的带LIMIT的分页SQL就能正常执行。

  • 备选:使用H2标准分页语法(需手动适配)
    如果不想切换兼容模式,可以改用H2支持的SQL标准分页写法,但需要将JPQL改为原生SQL查询并手动处理分页参数:

    @Query(value = "SELECT t.code FROM test t OFFSET ?1 ROWS FETCH NEXT ?2 ROWS ONLY", nativeQuery = true)
    Page<String> test(int offset, int pageSize);
    

    这种方式需要自行转换Pageable中的偏移量和每页数量,不如第一种方案便捷。

内容的提问来源于stack exchange,提问作者Kaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:42:15