[SPRING] Spring 데이터 나머지 페이지 가능 자식 콜렉션
SPRINGSpring 데이터 나머지 페이지 가능 자식 콜렉션
나는 User라고 불리는 @Entity를 가지고있다. 그것은 다음과 같이 변경 집합을 가지고 있습니다 :
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="user")
private Set<Changeset> changesets = new HashSet<Changeset>();
나는 UserRepository있다 :
@Repository
@RestResource(path = "users", rel = "users")
public interface UserRepository extends JpaRepository<User, Long>{ }
그리고 ChangesetRepository :
@Repository
@RestResource(path = "changesets", rel = "changesets")
public interface ChangesetRepository extends JpaRepository<Changeset, Long> { }
http : // localhost : 8080 / changesets / 또는 http : // localhost : 8080 / users /에서 GET을 호출하면 호출 응답이 생성됩니다.
http : // localhost : 8080 / users / 1 / changesets에서 GET을 호출하면 모든 결과가 단일 배열로 전달되고 페이징이 발생하지 않습니다.
Spring Data Rest에 부모 User를 통해 변경 집합 컬렉션을 페이지 형식으로 반환하려는 경우이를 나타낼 수 있습니까? 변경 집합은 빠르게 커질 것이며 단일 페이지에서 많은 결과를 반환하지 않을 것입니다.
편집하다:
윌리 휠러 (Willie Wheeler)가 제안한대로,이를 ChangesetRepository에 추가하여 검색 가능하게 만들었습니다.
@RestResource(path = "byUser", rel = "byUser")
public Page<Changeset> findByUser(@Param("id") User user, Pageable p);
관계를 양방향으로 유지하면서 변경 집합에 @RestResource (exported = false)를 사용하여 사용자의 변경 집합에 대한 링크를 숨길 수있었습니다.
사이드 노트 : 관계를 exported = false로 설정하면 링크가 숨겨 지지만 실제로 매핑이 제거되지는 않습니다. / users / 1 / changesets는 광고되지 않지만 여전히 유효합니다.
해결법
-
==============================
1.SDR이 귀하가 묘사하는 접근 방식을 직접적으로 지원한다고 생각하지 않습니다.
SDR이 귀하가 묘사하는 접근 방식을 직접적으로 지원한다고 생각하지 않습니다.
당신이 취할 수있는 또 다른 접근 방법이 있습니다. Person과 Changeset 사이에 양방향 관계를 사용하는 대신 Changeset에서 Person으로 단방향으로 지정하십시오. 그런 다음 ChangesetRepository에서 다음과 같은 메소드를 포함하십시오.
@RestResource(path = "find-by-person") Page<Changeset> findByPerson(@Param("person") Person person, Pageable pageable);
(저는 메모리에서 그렇게하고 있습니다. 따라서 약간의 조정이 필요할 수 있습니다.)
디자인 관점에서 나는 사람의 changesets가 제한된 수의 맥락에서 관련이 있다고 상상하기 때문에 이것이 더 강하다고 생각합니다. 변경 세트를 사람과 묶기보다는 쿼리하는 것이 더 적절할 수 있습니다.
from https://stackoverflow.com/questions/21469538/spring-data-rest-pageable-child-collection by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 각도 js spring mvc를 사용하여 멀티 파트 파일을 업로드하는 방법 (0) | 2019.02.17 |
---|---|
[SPRING] Spring @ExceptionHandler에서 @ ResponseStatus-annotated 예외로 예외를 다시 발생시키는 방법? (0) | 2019.02.17 |
[SPRING] 빈으로 새 대기열, 바인딩 및 교환을 동적으로 추가 (0) | 2019.02.17 |
[SPRING] 스프링으로 에러 메시지를받는 중 "cvc-elt.1 : 'beans'요소의 선언을 찾을 수 없습니다." (0) | 2019.02.17 |
[SPRING] Spring 부트 jdbc 데이터 소스 자동 구성이 독립형 Tomcat에서 실패합니다. (0) | 2019.02.17 |