我正在使用Spring Boot 2.x,Spring Data Rest,HEATEOAS,Hibernate。
我创建了一个像这样的控制器:
@RepositoryRestController
public class CustomerController {
@GetMapping(path = "/customers/{id}/eyeExams")
public ResponseEntity<?> getEyeExams(@PathVariable(value = "id") long id, Pageable pageable, Locale locale,
PersistentEntityResourceAssembler resourceAssembler) {
return new ResponseEntity<>(pagedResourcesAssembler.toResource(eyeExamRepository.findByCustomerId(id, pageable), resourceAssembler),
HttpStatus.OK);
}
我想做的是在Customer
资源中公开特定的资源链接:eyeExams。
HTTP请求如下所示:
http://localhost:8082/api/v1/customers/25/eyeExams?size=20&sort=date%2Cdesc
date
是EyeExam
而不是Customer
的属性。
似乎Spring从对象Pageable中删除了排序信息,因为它检测到该属性不属于Customer
。
不幸的是,在我看来,这是非常有限的。
这是我输入方法时得到的调试的屏幕截图。如您所见,排序是不确定的。
是否有一种方法可以告诉Spring不要删除排序属性,即使它们似乎不正确?实际上,我在eyeExamRepository.findByCustomerId
中非常小心,以创建正确的查询来管理排序属性。