当前位置: 首页 > 知识库问答 >
问题:

Spring数据@查询可分页,排序不排序

慎风畔
2023-03-14

我试图指定一个用@Query注释的存储库方法和一个带有Sort对象的Pagable:

编辑1:此存储库正在扩展分页和排序存储库。

@Query("...")
Page<Entity> findBySomething(..., 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。

共有2个答案

颜新
2023-03-14

你的要求是什么?

不幸的是,当你搜索“spring boot sort pageable”时,谷歌上有一个索引很高的页面,它将你指向以下内容:
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/

旧的排序方法是添加一个附加参数,该参数的名称由“”后缀。带有asc或desc的dir。

新的方法是

您还可以查看返回结果的“sort”值,以查看在检查后端查询生成之前是否尝试过排序。即

{“content”:[],“last”:true,“totalElements”:0,“totalPages”:0,“sort”:[{“direction”:“DESC”,“property”:“createdDate”,“ignoreCase”:false,“nullHandling”:“NATIVE”,“升序”:false,“降序”:true}],“size”:1000,“number”:0,“first”:true,“numberOfElements”:0})

我希望这有帮助。

楚良平
2023-03-14

你可以做到这一点,就像我一样。

试试这个,它对你帮助不大。

1)在控制器中

java prettyprint-override">@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);
 类似资料:
  • 我使用了spring boot(1.3.5)、spring-data、spring-data-jpa、JPA(hibernate/hsqldb)。 代码: 控制器: 我试着 也是,但不起作用。 浏览器输出: SQL无效!额外的“:”和重复的“ASC ASC”。 控制台输出:

  • 问题内容: 我对mongodb相当陌生,并且在尝试进行有序mongodb查询时。但是不推荐使用spring数据mongodb的sort方法。所以我用了: 我使用了此代码块。但是它没有对数据进行排序。那么,您可以选择使用任何有用的方法进行此练习吗? 问题答案: 您可以通过这种方式定义排序以忽略大小写:

  • 本文向大家介绍JQuery+Ajax实现数据查询、排序和分页功能,包括了JQuery+Ajax实现数据查询、排序和分页功能的使用技巧和注意事项,需要的朋友参考一下 之前很少会用javascript去实现页功能主要怕麻烦,但了解JQuery后这种想法发生了变化;有了这样的脚本组件就可以在编写脚本时方便和HTML隔离出来,这样编写高重用性的脚本就更方便。下面就是介绍在学习JQuery过程中编写的基于A

  • 分页 使用 limit 和 offset 来控制分页数据: limit 指定该请求返回的结果个数 offset 偏移量,指定该请求返回的结果的起始位置 默认 limit 为 20, offset 为 0,我们也可以手动指定 limit 和 offset 来控制。例如,每页展示 100 条数据,需要获取第五页的数据,将 limit 设置为 100、offset 设置为 400 即可。limit 最大

  • {% tabs first=”SDK 1.1.0 及以上版本”, second=”SDK 1.1.0 以下版本” %} {% content “first” %} SDK 1.1.0 及以上版本 分页 使用 limit 和 offset 来控制分页数据: limit 指定该请求返回的结果个数 offset 偏移量,指定该请求返回的结果的起始位置 默认 limit 为 20, offset 为 0,

  • 就像你可以看到注释“#sort”还在那里一样。 我尝试过Spring Data和带分页的本机查询,但注释还在,而使用另一个语法,如?#{#sort}或{#sort},问题仍然存在。 什么都欢迎。