我试图指定一个带有@Query
注释的存储库方法和一个内部带有Sort
对象的Pageable:
编辑1:。此存储库正在扩展PagingAndSortingRepository
。
@Query("...")
Page<Entity> findBySomething(..., Pageable pageable);
使用以下方法签名指定pageable
对象:
public PageRequest(int page, int size, Direction direction, String... properties)
但是生成的输出查询没有排序选项,例如:
select a, b, c from table_x where ... limit 10
...当我期望的是:
select a, b, c from table_x where ... order by a asc limit 10
这里有人遇到过这样的问题吗? 我正在使用Spring-Boot 1.5.x。
答案 0 :(得分:0)
您可以像我一样这样做。
尝试一下,可能对您没有帮助。
1)在控制器中
@RequestMapping("/findUserByNameAndSortItDescNo/{name}")
public @ResponseBody Page<User> findBookByNameAndSortItAscByName(@PathVariable String name)
{
// Page = 'A page is a sublist of a list of objects. It allows gain information about the position of it in the containing entire list.'
Page<User> user = userRepository.findByName(name,new PageRequest(0,100,new Sort(Direction.DESC,"no")));
return user;
}
2)在存储库中。
Page<User> findByName(String name,Pageable pageable);
答案 1 :(得分:0)
您的请求是什么样的?
不幸的是,当您搜索“ spring boot sort pageable”时,Google上的索引索引页很高:
https://docs.spring.io/spring-data/rest/docs/2.0.0.M1/reference/html/paging-chapter.html
以上不再是进行排序的正确方法。相反,您应该遵循此https://docs.spring.io/spring-data/rest/docs/current/reference/html/
排序的旧方法是添加一个附加参数,该参数的后缀为'.dir',后缀为asc或desc。
新方法是&sort =,其中方向由属性名称的附加逗号提供。
您还可以查看返回结果的“排序”值,以查看在检查后端查询生成之前是否曾尝试进行排序。即
{“ content”:[],“ last”:true,“ totalElements”:0:“ totalPages”:0,“ sort”:[{“ direction”:“ DESC”,“ property”:“ createdDate” ,“ ignoreCase”:false,“ nullHandling”:“ NATIVE”,“ ascending”:false,“ descending”:true}],“ size”:1000,“ number”:0,“ first”:true,“ numberOfElements” :0})
我希望这会有所帮助。