Скажем, у меня есть класс сущности Person
и контроллер PersonController
. У меня есть пользовательская конечная точка REST, которую я хочу реализовать, и я не могу использовать метод CrudRepository
для.
Вот как выглядит мой PersonController
:
@RepositoryRestController
@RequestMapping("/people")
public class PersonController {
@Autowired
private PeopleRestResource peopleRestResource; //@RepositoryRestResource extending CrudRepository
@GetMapping("/custom")
public ResponseEntity<?> getCustomPeople(PersistentEntityResourceAssembler persistentEntityResourceAssembler) {
Set<Person> people = stream(this.peopleRestResource.findAll().spliterator(), true)
.filter(/*Filter logic*/)
.collect(toSet());
return ok(persistentEntityResourceAssembler.toFullResource(people));
}
}
Это выдаст IllegalArgumentException
с сообщением PersistentEntity must not be null
. people
на самом деле будет содержать набор из двух человек, поэтому это сообщение об ошибке сначала было немного запутанным. Тем не менее, я предполагаю, что это сообщение на самом деле означает Set is not a persistent entity
, как если бы я должен был вернуть только одного человека, код работал бы просто отлично.
@GetMapping("/custom")
public ResponseEntity<?> getCustomPeople(PersistentEntityResourceAssembler persistentEntityResourceAssembler) {
Person person = stream(this.peopleRestResource.findAll().spliterator(), true)
.filter(/*Filter logic*/)
.findFirst()
.elseThrow(() => new IllegalStateException());
return ok(persistentEntityResourceAssembler.toFullResource(person));
}
Есть ли способ использовать PersistentEntityResourceAssembler
для создания ресурса HAL для списка сущностей?
Желательно, чтобы я не хотел создавать Resources
объект и сам создавать все ссылки.