내 앱에서 Things와 Stuff간에 외래 키 관계가 있는데, 주어진 Thing에는 수백 개의 Stuff가 들어있을 수 있습니다. Spring Data JPA를 사용하여 Thing 및 Stuff 저장소를 노출한다.Spring HATEOS로 JPA 리포지토리 쿼리 메서드에 연결하려고 시도하는 중 IllegalArgumentException이 발생합니다. 'uriTemplate'은 null이 아니어야합니다.
선택한 사용자와 관련된 모든 항목을 표시하고 싶지만 반환 할 항목 크기 때문에 항목 결과를 페이지에 넣고 싶습니다.
검색은 것 반환에서 포함 된 물건 링크에 페이징 기능을 추가 할 수 없습니다 것을 보여 주었다, 나의 것 저장소에서 반환 아래의 링크를 페이징되지 않을 수 있습니다
"stuff": {
"href": "http://localhost:8080/api/things/1/stuff"
}
그래서 내가 가진 내 물건 저장소에 사용자 정의 메서드를 추가하여 물건 ID로 모든 물건을 가져오고, 직접 호출 할 때 제대로 작동합니다.
나는 모든 지을 수 있었던 물건을 얻을 수있는 사용자 정의 검색 방법을 가리키는 것은 자원의 반환에 링크를 추가 할,하지만 난 ControllerLinkBuilder.linkTo() 메서드를 사용할 때 그것은
java.lang.IllegalArgumentException: 'uriTemplate' must not be null
at org.springframework.util.Assert.hasText(Assert.java:181) ~[spring-core-4.3.11.RELEASE.jar:4.3.11.RELEASE]
at org.springframework.web.util.UriTemplate.<init>(UriTemplate.java:61) ~[spring-web-4.3.11.RELEASE.jar:4.3.11.RELEASE]
물건 실패 리포 :
public interface StuffRepo extends JpaRepository<Stuff, Long> {
Page<Stuff> findByThingId(@Param("thingId") Long thingId, Pageable pageable);
}
구성 :
@Bean
ThingProcessor getThingProcessor()
{
return new ThingProcessor();
}
public static class ThingProcessor implements ResourceProcessor<Resource<Thing>>{
@Override
public Resource<Thing> process(Resource<Thing> resource) {
ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(StuffRepo.class).findByThingId(resource.getContent().id, null));
return resource;
}
}
암 I 누락의 주석 주석 또는 구성? Repo 및 메서드에 @RestResource 주석을 달았으며 아무런 차이가 없습니다. 또한 하위 개체에 대해 페이징 된 결과를 얻는 더 좋은 방법이 있습니까?