Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
4
respostas

[Dúvida] Unable to locate constructor for embeddable

Estou refazendo um curso e apareceu esse erro "Unable to locate constructor for embeddable 'med.vall.api.endereco.Endereco' "

package med.vall.api.controller;

import med.vall.api.medico.DadosCadastroMedico;
import med.vall.api.medico.Medico;
import med.vall.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 {

    @Autowired
    private MedicoRepository repository;

    @PostMapping
    public void cadastrar(@RequestBody DadosCadastroMedico dados){
        repository.save(new Medico(dados));
        //System.out.println(dados);

    }
}
package med.vall.api.medico;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.vall.api.endereco.Endereco;

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




}
package med.vall.api.endereco;

import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Embeddable
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Endereco {

    private String logradouro;
    private String bairro;
    private String cep;
    private String cidade;
    private String uf;
    private String numero;
    private String complemento;

    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();
    }
}
4 respostas
solução!

Oi, Estudante.

É um problema do IntelliJ com o plugin do Lombok, sendo que para resolver você deve alterar uma configuração.

  • Acessa as configurações (atalho: CTRL + ALT + S) e deixe essa opção assim:

Uma captura de tela de uma janela de configurações em um IDE, mostrando três passos numéricos com setas vermelhas indicando a navegação de 'Build, Execution, Deployment' > 'Compiler' > 'Annotation Processors', a seleção da guia 'api' e a seleção da opção 'Obtain processors from project classpath'.

Por padrão vem selecionada a opção Processor Path, com um caminho que dá problema no IntelliJ, então você precisa alterar pra opção Obtain processors from project classpath.

Depois de fazer essa alteração, basta realizar um build no projeto (botão direito no projeto -> Build Module 'api').

Espero ter ajudado.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Ola, Lorena

obrigado por ajudar mais uma vez, mas nao funcionou

Oii!

Tenta reiniciar a IDE e faz um rebuild (botão direito -> Rebuild Module 'api') do projeto e vê na aba de build do intellij se vai acusar algum erro:

Captura de tela do painel "Build Output" em um IDE mostrando a mensagem de que a compilação do projeto "2771-spring-boot" foi concluída com sucesso com dois avisos

Fico no aguardo.

Ah deu certo agora, obrigadão de novo :)