使用 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...
^
问题似乎在于生成的查询来计算表中的条目
请尝试在“propriedade”后面添加别名,例如“p”。会是这样的:
@Query(value ="SELECT * " +
"FROM propriedade p " +
"INNER JOIN proprietario " +
" ON proprietario.id = p.proprietario_id " +
"WHERE proprietario.nome ILIKE %:proprietario% ",
nativeQuery = true
)