好吧,在getOne()
内,我要强制使用用于测试的 id 。我需要动态地通知我将在GuiaRecolhimento
中设置PagamentoGuia
中的哪个 id 。我该怎么办?
@PostMapping
public PagamentoGuia create(@RequestBody PagamentoGuia pagamentoGuia) {
GuiaRecolhimento g = repositoryGuia.getOne((long) 764);
pagamentoGuia.setGuia(g);
return repository.save(pagamentoGuia);
}
答案 0 :(得分:0)
通过PathVariable接收PostMapping网址中的ID。
@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
为了根据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);
}
答案 1 :(得分:0)
恕我直言,您必须创建一个DTO来接收GuiaRecolhimento
的ID。
由于您正在数据库中创建PagamentoGuia
,因此不适当接收id
的{{1}}作为路径变量,因为它与我们所指的主要系列(PagamentoGuia)。
使用DTO。这样,您就可以根据REST模式遵循正确的语义。