小编Twa*_*jes的帖子

Spring Pageable排序公开了dao的内部命名

我正在使用Spring和Spring存储库构建其余的微服务。我想让客户端控制分页和排序(使用spring-data-rest)。

public PagedResources<TestDto> find(
    @PageableDefault(page = 0, size = 50) final Pageable pageable,
    final PagedResourcesAssembler<Test> assembler) {

    final Page<Test> pagedResults = testRepository.findAll(pageable);

    return assembler.toResource(pagedResults, testResourceAssembler);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码很好用,但是我不满意排序是耦合到我的dao层而不是dto层。例:

http://localhost:8080/my-service/test?size=100&page=0&sort=statusCode,asc
Run Code Online (Sandbox Code Playgroud)

json响应(DTO):

{
  "links": [
    ...
    ...
  ],
  "content": [
    {
      "id": 4
      "status": "OK"
      "links": []
    }
  ],
  "page": {
    "size": 100,
    "totalElements": 1,
    "totalPages": 1,
    "number": 0
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,请求url中的“ statusCode”排序与响应dto中相应的“ status”之间的区别。从客户的角度来看,这是不合逻辑的。现在,我还公开了该服务的一些内部信息。我无法更改服务的实现,因为它可以由客户端使用,并且在更改名称后会破坏旧的请求。

当我添加一个自定义映射以处理searchrequest中的状态码与状态的差异时:

private PageRequest getPageRequest(final Pageable pageable) {
    final List<Order> newOrder = new ArrayList<>();
    for (final Order order : pageable.getSort()) …
Run Code Online (Sandbox Code Playgroud)

java dao dto spring-data-jpa spring-data-rest

5
推荐指数
1
解决办法
151
查看次数

标签 统计

dao ×1

dto ×1

java ×1

spring-data-jpa ×1

spring-data-rest ×1