Quando tento levantar o projeto, ele da erro como se o atributo id da classe Medico estivesse duplicado, mas não está
package med.voll.api.medico;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.endereco.Endereco;
@Entity
@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 dadosRequisicao) {
this.nome = dadosRequisicao.nome();
this.email = dadosRequisicao.email();
this.crm = dadosRequisicao.crm();
this.especialidade = dadosRequisicao.especialidade();
this.endereco = new Endereco(dadosRequisicao.endereco());
}
}
package med.voll.api.medico;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MedicoRepository extends JpaRepository<Medico, Long> {
}
package med.voll.api.medico;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MedicoService {
@Autowired
private MedicoRepository medicoRespository;
public void cadastrarMedico(Medico medico){
medicoRespository.save(medico);
}
}
package med.voll.api.controller;
import med.voll.api.endereco.Endereco;
import med.voll.api.medico.DadosCadastroMedico;
import med.voll.api.medico.Medico;
import med.voll.api.medico.MedicoService;
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 {
@Autowired
private MedicoService service;
@PostMapping
public void cadastrar(@RequestBody DadosCadastroMedico dadosRequisicao){
service.cadastrarMedico(new Medico(dadosRequisicao));
}
}
package med.voll.api.endereco;
import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Embeddable
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Endereco {
private Long id;
private String logradouro;
private String bairro;
private String cep;
private String numero;
private String complemento;
private String cidade;
private String uf;
public Endereco(DadosEndereco dados) {
this.logradouro = dados.logradouro();
this.bairro = dados.bairro();
this.cep = dados.cep();
this.uf = dados.uf();
this.cidade = dados.cidade();
this.numero = dados.numero();
this.complemento = dados.complemento();
}
}