Spring数据:将CollectionModel与RepositoryRestController一起使用时,响应中缺少页面信息

okxuctiv  于 2022-12-26  发布在  Spring
关注(0)|答案(1)|浏览(110)

我的存储库方法是:

public Page<Order> findByStatusIn(List<OrderStatus> orderStatuses, Pageable pageable);

从控制器(@RepositoryRestController)调用,如下所示:

Pageable paging = PageRequest.of(page, pageSize, Sort.by(Sort.Direction.DESC,"id"));
Page<Order> myOrders = orderRepository.findByStatusIn(orderStatuses, paging);

页面转换为CollectionModel

CollectionModel<Order> resources = CollectionModel.of(myOrders);
resources.add(linkTo(methodOn(OrderController.class).userOrders(page,pageSize,currentUser)).withSelfRel());
return new ResponseEntity<>(resources,HttpStatus.OK);

输出json如下所示:

{
  "_embedded": {
"orders": [
  {
  "orderId": 10011,
    "createdAt": "2022-05-18T16:28:19+05:30",
    "lastUpdatedAt": "2022-06-10T16:28:15+05:30",
    "createdBy": "User01",
    "status": "PENDING"
  },
  {
  "orderId": 10012,
    "createdAt": "2017-05-03T14:28:19+05:30",
    "lastUpdatedAt": "2022-06-10T16:28:15+05:30",
    "createdBy": "User01",
    "status": "SHIPPED"
  }
]
  },
"_links": {
"self": {
  "href": "http://localhost:8080/orders/userOrders?page=0&pageSize=11"
}
}
}

我得到的数据是正确的,但是响应缺少页面信息,因为响应是从Spring Data 中的存储库方法得到的。

"page": {
"size": 20,
"totalElements": 20,
"totalPages": 1,
"number": 0
}

不见了。
使用@RepositoryRestController时,如何将页面信息添加到响应中?

svmlkihl

svmlkihl1#

应使用PagedModel而不是CollectionModel创建可分页集合的表示形式。若要轻松地将Page示例转换为PagedModel,请按here所述使用PagedResourcesAssembler

相关问题