JPA 在使用本机查询和可分页时生成损坏的 SQL

问题描述 投票:0回答:1

使用 Spring-Boot 2.7.7,当我尝试创建一个接收可分页并输出页面的本机 PostgreSQL 查询时,它似乎为其中一个页面属性生成了损坏的 SQL

这是我用于该函数的查询:

    @Query(value ="SELECT * " +
            "FROM propriedade " +
            "INNER JOIN proprietario " +
            "  ON proprietario.id = propriedade.proprietario_id " +
            "WHERE proprietario.nome ILIKE %:proprietario% ",
            nativeQuery = true
    )
    Page<Propriedade> findByProprietarioLikePage(Pageable pageable, @Param("proprietario") String proprietario);

当我尝试调用该函数时,它会生成一些 SQL 命令,但在这个命令中中断:

Hibernate: select count(INNER) FROM propriedade INNER JOIN proprietario   ON proprietario.id = propriedade.proprietario_id WHERE proprietario.nome ILIKE ?   AND condominio_id = ? 
2023-08-07 10:34:57.361  WARN 319426 --- [nio-8082-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42601
2023-08-07 10:34:57.361 ERROR 319426 --- [nio-8082-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: syntax error at or near ")"

如果我尝试在 PSQL 上运行此计数,我会收到相同的错误:

ERROR:  syntax error at or near ")"
LINE 1: select count(INNER) FROM propriedade INNER JOIN proprietario...
                          ^

问题似乎在于生成的查询来计算表中的条目

spring spring-data-jpa
1个回答
0
投票

请尝试在“propriedade”后面添加别名,例如“p”。会是这样的:

@Query(value ="SELECT * " +
        "FROM propriedade p " +
        "INNER JOIN proprietario " +
        "  ON proprietario.id = p.proprietario_id " +
        "WHERE proprietario.nome ILIKE %:proprietario% ",
        nativeQuery = true
)
© www.soinside.com 2019 - 2024. All rights reserved.