我有一个奇怪的情况,如果我将页面大小设置为小于结果的总大小,它就会出错。
在我的仓库中,有一个巨大的查询包含在 WITH 中以保持简单,因此应该在那里进行分页(我还重命名了引号内的一些字段,并且 jpa 无法找到它们,除非它们是嵌套的),如下所示:
回购:
String QRY_DATA = "WITH result AS (<ton of code>) SELECT * FROM result";
@Query(nativeQuery = true, value = QRY_DATA)
Page<IBusinessDataDto> getData(UUID userId, Pageable pageable);
服务:
...
Pageable pageable = PageRequest.of(page - 1, pageSize, Sort.Direction.ASC, "businessId");
Page<IBusinessDataDto> test = repository.getData(userId, pageable);
...
我已经在代码之外测试了查询,它可以正常工作并返回 2 个结果,如果我将“pageSize”设置为 3,它在代码中可以正常工作,但如果我将其设置为 2 或 1,则会出现错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "FROM"
我尝试打印flyway SQL,得到以下信息:
Hibernate: WITH result AS (...) SELECT * FROM result order by businessId asc limit ?
Hibernate: WITH result AS (...) SELECT * FROM result
2021-11-11 15:58:48.108 WARN 17088 --- [nio-8091-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42601
2021-11-11 15:58:48.108 ERROR 17088 --- [nio-8091-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: syntax error at or near "FROM"
Position: 1006
我不知道为什么这很重要或问题是什么,请告知。