1. Objeto aninhado
Requisição Post
POST http://localhost:8080/people
{
"name": "Nova Pessoa",
"salary": 8000.0,
"department": {
"id": 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.
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();
}
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