2017-11-01 1 views
0

Spring 데이터 나머지 사용 투영을 사용하거나 중간에 DTO를 삽입하여 표현을 조정할 수 있지만 ... Pageable을 사용하여 정렬 매개 변수에서 간접 참조를 도입 할 수 있습니까?Pageable의 사용자 지정 정렬 매개 변수

스프링 데이터 나머지를 사용하는 동안 데이터베이스 모델 엔터티 필드 이름에서 노출 된 API 나머지를 얼마나 멀리 분리 할 수 ​​있는지 생각하고 있습니다. `와

@RepositoryRestResource 
public interface MyEntityRepo extends JpaRepository<MyEntity, Long> { 

    @Override 
    default Page<Listing> findAll(Pageable p) { 
     if (p.getSort() == null) { 

      // Default sort order 
      return findAllBy(new PageRequest(p.getPageNumber(), p.getPageSize(), Sort.Direction.DESC, "myProperty")); 
     } 
     return findAllBy(p); 
    } 

    @RestResource(exported = false) 
    Page<Listing> findAllBy(Pageable pageable); 
} 
+0

종류 = myProperty, desc' [링크] (HTTPS : // 문서 – Cepr0

+0

죄송합니다. 아마도 자신을 설명하지 않았을 것입니다. 이는 POJO 필드 이름이 변경 되어도 클라이언트가 엔터티가 변경된 경우 URL을 변경하지 않아도 변경할 수없는 API를 갖는 것에 대한 것입니다. 따라서 정확하게 정렬 매개 변수에서 myProperty를 사용하지 않는 방법입니다. – Rafael

+0

내 업데이트 된 답변보기 ... – Cepr0

답변

1

는 다음과 같은 트릭을 사용하여 저장소의 페이징 findAll 방법으로 기본 정렬 순서를 설정합니다. spring.io/spring-data/rest/docs/current/reference/html/#paging-and-sorting.sorting)
+0

기본 정렬 만 고려하고 있지 않기 때문에 정확히 무엇을 찾고 있었는지 ... 그러나 생각하지 않은 흥미로운 방법입니다. 감사! 각 컨트롤러 또는 저장소에 의해 정의 된 매핑을 사용하여 정렬 param 바꿀 메커니즘을 만들려고합니다. – Rafael

관련 문제