Как заставить resttemplate возвращать только классы, имеющие отношение к отправленному id - PullRequest
0 голосов
/ 06 мая 2019

Я хочу отправить запрос, который возвращает только классы, имеющие отношение к отправленному классу или идентификатору (если id -> найти класс с этим идентификатором в базе данных), а затем возвращает эти классы.

Скажем, у меня в БД следующие отношения:

Foo1 -- Bar1    
     |__Bar2

Foo2 -- Bar3

Моя цель - отправить запрос, который возвращает список, имеющий отношение к Foo1.

class Foo{
private id;
@OneToMany
private List<Bar> bars;
}

class Bar {
private id;
@ManyToOne
private Foo foo;
}

Поэтому я подумал, что следующее решение было правильным: Клиентская сторона:

public List<Bar> getBarsInFoo(String fooId)
        {
                return Arrays.stream(restTemplate.getForObject(BASE_URL + "/" + fooId, Bar[].class)).collect(Collectors.toList());
        }

Сторона сервера:

GetMapping("/foo/{id}")
    public List<Bar> getBarsInFoo(@PathVariable long id){
        return fooService.getFooById(id).getBars();
    }

Я ожидаю, что мне будет возвращен список, но в настоящее время я получаю сообщение об ошибке «springframework.web.client.HttpClientErrorException $ NotFound: 404 null». Я уверен, что мой перезвон неправильный, как я могу попросить список и отправить идентификатор, чтобы отсортировать правильные данные на стороне сервера?

1 Ответ

0 голосов
/ 06 мая 2019

На стороне клиента попробуйте следующий код:

 return restTemplate.exchange(BASE_URL + "/" + fooId, HttpMethod.GET, null, new ParameterizedTypeReference<List<Bar>>() {
                }).getBody();
...