spring-data-rest-webmvc 2.0.0.RELEASE w/spring-data-jpa 1.5.0.RELEASE를 사용 중입니다.스프링 데이터 REST Override findBy * 메소드
저는 RoomRepository, RoomRepositoryCustom 및 RoomRepositoryImpl 클래스가 있습니다.
@PostFilter 작업을 수행 할 수있는 사용자 지정 논리를 제공 할 수 있도록 findBy * 메서드를 재정의하려고하지만 페이지가 매겨진 결과를 반환합니다.
나는 원래 RoomRespository이 있었다 :
@PostFilter("hasPermission(filterObject, '" + FIND + "')")
@RestResource(rel = "byName", path = "byName")
public List<Room> findByName(@Param("name") String name);
그것은 잘 작동하지만, 때문에 나는 목록을 반환해야하고, 페이지를 반환 할 수 @PostFilter에 대한 제한에. 내가 좋아하는 것
는 다음과 같이 @PostFilter 페지 :
@RestResource(rel = "byName", path = "byName")
public Page<Room> findByName(@Param("name") String name, Pageable p);
하지만 난 여전히 인증 된 사용자의 교장이 내 결과를 필터링 할 필요가있다. (내가 원하는대로 사용자 지정 메서드에서 수행하기를 원했습니다.)
그래서 RoomRespositoryImpl에서 구현을 제공하여 findByName을 재정의 할 수 있지만 제대로 작동하지 않는 것으로 나타났습니다. findByName을 대체하려고 시도하면 스프링 데이터 REST가 더 이상 메소드를 선택하지 않고 rooms/search/byName?name="test"
에 대한 엔드 포인트를 등록하지 않습니다.
또한 @Query를 사용하여 파인더에 대한 사용자 지정 쿼리를 정의하려고했습니다. 그것은 작동하지만 인증 된 사용자의 보안 주체를 쿼리 매개 변수로 사용해야하므로 내 용도로는 작동하지 않는다고 생각합니다.
요약 : 매개 변수가 포함 된 이름이있는 회의실의 페이지를 반환하는 Spring Data REST와 함께/rooms/search/byName? name = "test"끝점을 구현하는 가장 좋은 방법은 무엇입니까? 별도의 테이블에서 현재 인증 된 사용자의 권한을 조회하는 것을 기반으로하는 자체 사용자 정의 논리?
/rooms/search/* 아래에 맞춤 링크를 추가 할 수 있습니까?
페이지 매김 된 결과를 필터링하는 것이 어려운 사업으로 보입니다. findBy * 형식 메서드에 대한 사용자 지정 구현을 제공하고 SDR에서 엔터티의 루트 URL을 검색하거나 검색하도록 할 수 있습니까? 나는 페이지 매김을 수행하고 쿼리를 필터링 할 수 있지만 일관성을 유지하고 동일한 엔터티에 대해 내 검색 방법을 노출하고 싶습니다. –
동시에 둘 모두가 아닙니다. 사용자 정의 구현을 작성하는 것은 옵션이지만 사용자 정의 구현의 멱등 원성에 대해서는 판단 할 수 없으므로 자동으로 검색 리소스를 노출하지는 않습니다. 하지만 동일한 URI 공간에 블렌드하는 컨트롤러를 수동으로 코딩 할 수 있어야합니다. –