我尝试在Spring Boot for RESTFul中使用PagingAndSortingRepository。
@Repository
public interface PrsMainRepo extends PagingAndSortingRepository<PrsMain, String> {
@Query(value = "SELECT * FROM PagingFilter(?1,?2) ORDER BY ?#{#pageable}", nativeQuery = true)
Page<PrsMain> findAll(String colName, String condition, Pageable pageable);
}
这是我的主要存储库,当我用postman运行项目和测试时我得到了hibernate日志:
2017-12-25 15:20:32.370 DEBUG 7532 --- [nio-8080-exec-1] org.hibernate.SQL : SELECT * FROM PagingFilter(?,?) ORDER BY ? limit ? offset ?
Hibernate: SELECT * FROM PagingFilter(?,?) ORDER BY ? limit ? offset ?
2017-12-25 15:20:32.434 TRACE 7532 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [prs_firstname]
2017-12-25 15:20:32.441 TRACE 7532 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [VARCHAR] - [Sharon]
2017-12-25 15:20:32.456 TRACE 7532 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [VARBINARY] - [Page request [number: 6, size 10, sort: UNSORTED]]
2017-12-25 15:20:32.738 DEBUG 7532 --- [nio-8080-exec-1] org.hibernate.SQL : SELECT * FROM PagingFilter(?,?)
Hibernate: SELECT * FROM PagingFilter(?,?)
2017-12-25 15:20:32.747 TRACE 7532 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [prs_firstname]
2017-12-25 15:20:32.755 TRACE 7532 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [VARCHAR] - [Sharon]
这是返回空数据的内容。我不知道为什么,如何解决这个问题? (只有SELECT * FROM分页过滤器(?1,?2)正常工作)
{
"content": [],
"pageable": {
"sort": {
"sorted": false,
"unsorted": true
},
"offset": 60,
"pageSize": 10,
"pageNumber": 6,
"paged": true,
"unpaged": false
},
"last": true,
"totalElements": 12,
"totalPages": 2,
"size": 10,
"number": 6,
"sort": {
"sorted": false,
"unsorted": true
},
"numberOfElements": 0,
"first": false
}
它有点像给出页面索引的常见错误。请参阅有关PageRequest的文档。
页面为零索引,因此为页面提供0将返回第一页。