Как я могу получить «id» динамически, чтобы установить объект - PullRequest
0 голосов
/ 10 января 2020

Ну, внутри getOne() Я заставляю id , который я использовал для тестирования. Мне нужно, динамически, сообщить, какой id в GuiaRecolhimento я установлю в PagamentoGuia. Как я мог это сделать?

@PostMapping
public PagamentoGuia create(@RequestBody  PagamentoGuia pagamentoGuia) {

     GuiaRecolhimento g = repositoryGuia.getOne((long) 764);

     pagamentoGuia.setGuia(g);

     return repository.save(pagamentoGuia);
}

Ответы [ 2 ]

0 голосов
/ 10 января 2020

ИМХО вам нужно создать DTO, который получает идентификатор GuiaRecolhimento.

Поскольку вы создаете PagamentoGuia в своей базе данных, получая id из GuiaRecolhimento в качестве переменной пути присвоено , а не , поскольку оно не связано с основной коллекцией, на которую мы ссылаемся (PagamentoGuia).

Используйте DTO. Таким образом, вы следуете правильному семантию c согласно шаблонам REST.

0 голосов
/ 10 января 2020

Получите идентификатор в URL-адресе PostMapping с помощью PathVariable.

@PostMapping(value = "/{id}")
public PagamentoGuia create(@RequestBody  PagamentoGuia pagamentoGuia, @PathVariable(value = "id") Long id) {

    GuiaRecolhimento g = repositoryGuia.getOne(id);

    pagamentoGuia.setGuia(g);

    return repository.save(pagamentoGuia);
}

Редактировать: я согласен с Matheus Cirillo

За вами следуют правильные semanti c согласно шаблонам REST вы можете использовать объект DTO.

public class PagamentoGuiaDto {
   private Long guiaRecolhimentoId;

   // all attributes of PagamentoGuiaDto
   // all getters and setters
}

@PostMapping
public PagamentoGuia create(@RequestBody  PagamentoGuiaDto dto) {

GuiaRecolhimento g = repositoryGuia.getOne(dto.getPagamentoGuiaId());

PagamentoGuia pagamentoGuia = new PagamentoGuia();
pagamentoGuia.setGuia(g);

// set the values of dto to pagamentoGuia

return repository.save(pagamentoGuia);

}

...