Tentei algumas soluções, mas até agora não consegui resolver
package med.voll.api.medico;
import jakarta.persistence.*;
import lombok.*;
import med.voll.api.endereco.Endereco;
@Table(name = "medicos")
@Entity(name = "Medicos")
@ToString
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Medico {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String email;
private String crm;
@Enumerated(EnumType.STRING)
private Especialidade especialidade;
@Embedded
private Endereco endereco;
public Medico(DadosCadastroMedico dados) {
this.nome = dados.nome();
this.email = dados.email();
this.crm = dados.crm();
this.especialidade = dados.especilidade();
this.endereco = new Endereco(dados.endereco());
}
}
package med.voll.api.medico;
public enum Especialidade {
ORTOPEDIA,
CARDIOLOGIA,
GINECOLOGIA,
DERMATOLOGIA;
}
package med.voll.api.controller;
import jakarta.transaction.Transactional;
import jakarta.validation.Valid;
import med.voll.api.medico.DadosCadastroMedico;
import med.voll.api.medico.Medico;
import med.voll.api.medico.MedicoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("medicos")
public class MedicoController {
/*O próprio Spring vai instanciar e passar o atributo na nossa classe repository */
@Autowired
private MedicoRepository repository;
@PostMapping
@Transactional
public void cadastrarMedico(@RequestBody @Valid DadosCadastroMedico dados) {
var medico = new Medico(dados);
System.out.println(medico);
repository.save(medico);
}
}