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

SpringBoot+MySQL中带Pageable的Native Query报'H列不存在'求助

解决Spring Boot JPA原生查询分页时的Unknown column 'H'错误

问题原因

在原生查询中使用Pageable参数时,Spring Data JPA会自动生成对应的count查询来统计总记录数,但自动生成的count查询会错误地引用主查询里的表别名H,导致抛出Unknown column 'H' in 'field list'错误。而去掉Pageable后不需要执行count查询,主查询本身的别名是有效的,因此能正常运行。

解决方案

手动指定count查询,避免JPA自动生成错误的count语句。修改后的DAO接口代码如下:

public interface IHouseDao extends JpaRepository<House, String> {

    @Query(value = "SELECT H.*, (4) AS distance FROM house H", 
           countQuery = "SELECT COUNT(H.id) FROM house H",
           nativeQuery = true)
    Page<House> search(Pageable pageable);
}

说明

  • countQuery参数单独指定了统计记录数的查询语句,直接基于表house的主键统计数量,不会涉及主查询中的额外字段(比如distance),确保count查询能正确执行。
  • 主查询保持原有逻辑,依然可以返回包含distance字段的结果,同时完美支持分页功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:15:38