1. Objeto aninhado

Requisição Post

POST http://localhost:8080/people
{
  "name": "Nova Pessoa",
  "salary": 8000.0,
  "department": {
  "id": 1
  }
}
  1. Criar um DTO para recebermos os dados e instanciar um objeto Java.

Esse DTO criado, precisa ter os dados da pessoa + o seu departamento, exatamente igual na imagem acima.

Como não podemos dentro de um DTO usar uma entidade. Precisaremos também criar um DepartmentDTO.

  1. Criar um service para realizar a operação

Criaremos o Service juntamente com o método Insert recebendo o DTO criado.

  • Importar o repository.

  • Criaremos uma entity Person vazia.

  • Copiaremos os dados do DTO para a nossa entidade Person.

Para colocar o ID do department dentro da Entity, precisa instanciar um departament para puxar os dados do dto.

Por fim, precisamos converter de Entity para DTO.

Para isso é só nos DTOS, criar um construtor apto a receber um Person. Já no DepartmentDto, ele precisa de um construtor para receber um Department.

Como abaixo. A diferença é que aqui é um Product para ProductDTO.

public ProductDto(Product entity) {
    id = entity.getId();
    name = entity.getName();
    description = entity.getDescription();
    price = entity.getPrice();
    imgUrl = entity.getImgUrl();
}
  1. O terceiro passo é criar um controller

Injetaremos o service e colocaremos na classe o método insert, passando os parâmetros juntamente com a lógica correta.

A lógica é a de sempre... ResponseEntity + URI. (Qualquer coisa ver o video na pt2).

Teste no Postman

Aqui é só dar o Post no HTTP acima, juntamente com os pârametros JSON. Ao dar send, deve funcionar.

Atualizado