将自定义排序属性与@RepositoryRestController中的Pageable一起使用

时间:2018-09-04 15:53:53

标签: spring spring-boot spring-data-rest

我正在使用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

dateEyeExam而不是Customer的属性。 似乎Spring从对象Pageable中删除了排序信息,因为它检测到该属性不属于Customer。 不幸的是,在我看来,这是非常有限的。

这是我输入方法时得到的调试的屏幕截图。如您所见,排序是不确定的。

enter image description here

是否有一种方法可以告诉Spring不要删除排序属性,即使它们似乎不正确?实际上,我在eyeExamRepository.findByCustomerId中非常小心,以创建正确的查询来管理排序属性。

0 个答案:

没有答案