Spring Data REST的QueryDSL集成能否与现有的分页功能集成?

时间:2016-02-03 11:14:19

标签: spring spring-data spring-data-jpa spring-data-rest querydsl

我目前正在构建一个REST API,我希望客户端可以轻松过滤特定实体的大多数属性。将QueryDSLSpring Data RESTan example by Oliver Gierke)结合使用可以让我轻松达到我想要的90%,允许客户端通过组合引用属性的查询参数进行过滤(例如{{ 1}})。 (If you're using the same integration Oliver Gierke's answer to my previous question might also help.

不幸的是,当使用QueryDSL提供的其他过滤器时,如/users?firstName=Dennis&lastName=Laumen,这些过滤器似乎没有与Spring Data REST的分页功能集成。当firstName=Dennis&lastName=Laumen收集资源返回忽略应用过滤条件的链接时(例如GET而非http://localhost:8080/api/users?page=1&size=20),分页链接。

总结一下,使用Spring Data REST和QueryDSL时是否可以显示正确的分页链接?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

是的,我的spring数据小部件存储库

extends PagingAndSortingRepository<Widget, String>,QueryDslPredicateExecutor<Widget>,QuerydslBinderCustomizer<QWidget>

我可以在我的http请求中同时使用querydsl和page \ size参数,例如,

http://localhost:8080/widgets?securityType=XXX&settlementPriceCurrency=ABC&size=16

,并获得有效的分页链接:

  "_links" : {
    "first" : {
      "href" : "http://localhost:8080/widgets?page=0&size=16"
    },
    "self" : {
      "href" : "http://localhost:8080/widgets{&sort,projection}",
      "templated" : true
    },
    "next" : {
      "href" : "http://localhost:8080/widgets?page=1&size=16"
    },
    "last" : {
      "href" : "http://localhost:8080/widgets?page=61&size=16"
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/widgets"
    }
  },
  "page" : {
    "size" : 16,
    "totalElements" : 984,
    "totalPages" : 62,
    "number" : 0
  }

使用Spring Data Rest 2.6.6.RELEASE和spring data commons 1.13.6