1
resposta

No default constructor for entity 'med.voll.api.medico.Medico'

Olá estou na aula que puxa a lista de médicos já cadastrados porem mostra esse erro "No default constructor for entity 'med.voll.api.medico.Medico'", está tudo ok porém ao dar o GET no POSTMAN da essa mensagem mencionada, alguém sabe o porque ?

package med.voll.api.controller;

import jakarta.validation.Valid;
import med.voll.api.medico.DadosCadastroMedico;
import med.voll.api.medico.DadosListagemMedico;
import med.voll.api.medico.Medico;
import med.voll.api.medico.MedicoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/medicos")
public class MedicoController {
@Autowired
MedicoRepository repository;
@PostMapping
@Transactional
public void cadastrar(@RequestBody @Valid DadosCadastroMedico dados){
// System.out.println(dados);
repository.save(new Medico(dados));
}

@GetMapping
public List<DadosListagemMedico> listar(){
    return repository.findAll().stream().map(DadosListagemMedico::new).toList();
}

}

package med.voll.api.medico;

import jakarta.persistence.;
import lombok.
;
import med.voll.api.endereco.Endereco;

@Entity(name = "Medico")
@Table(name = "medicos")
@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 telefone;
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.telefone = dados.telefone();
    this.crm = dados.crm();
    this.especialidade = dados.especialidade();
    this.endereco = new Endereco(dados.endereco());
}

public Long getId() {
    return id;
}

public String getNome() {
    return nome;
}

public String getEmail() {
    return email;
}

public String getTelefone() {
    return telefone;
}

public String getCrm() {
    return crm;
}

public Especialidade getEspecialidade() {
    return especialidade;
}

public Endereco getEndereco() {
    return endereco;
}

}

package med.voll.api.medico;

public record DadosListagemMedico(String Nome, String email, String CRM, Especialidade especialidade) {
public DadosListagemMedico(Medico medico){
this(medico.getNome(), medico.getEmail(), medico.getCrm(), medico.getEspecialidade());
}
}

1 resposta

Já achei a resposta pessoal, faltou o construtor vazio na entidade Medico
public Medico(){};