Создание PersistentEntityResource для списка сущностей - PullRequest
0 голосов
/ 05 сентября 2018

Скажем, у меня есть класс сущности 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 объект и сам создавать все ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...