Olá! Fiz exatamente o que o instrutor falou para fazer nesse tópico:
E além de continuar reclamando nos GET, apareceu mais um erro:
Olá! Fiz exatamente o que o instrutor falou para fazer nesse tópico:
E além de continuar reclamando nos GET, apareceu mais um erro:
Bom dia, Osmarina! Tudo bem?
O Lombok está de mal conosco a muitos meses, alguns artigos atuais até recomendam a não utilização dele em projeto, mas vamos resolver o seu caso para você aproveitar completamente o conteúdo do curso.
A solução é fixar uma versão na dependência do Lombok e na versão do plugin, plugin esse que é o responsável por manter essa vigilância das annotations dentro do código.
Sendo mais direto, dentro do arquivo "pom.xml" você fará duas alterações, uma na sessão de </dependencies> na </dependency> do Lombok para ficar assim:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</dependency>
E na sessão <plugins>, mais especificamente em <configuration> que apresenta o <annotationProcessorPaths> que faz a configuração do processamento das annotations, logo terá o Lombok dentro estando dessa forma:
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</path>
Você pode utilizar versões mais recentes do Lombok, mas recomendo essa por ser mais estável e não apresentar uma mudança significativa para versões mais atuais.
Depois disso rode o ícone de "m" do Maven que aparece no canto superior direito para atualizar os pacotes da dependência do projeto e pronto, tudo deve estar funcionando corretamente.
Espero ter ajudado e bons estudos!
Olá, fiz exatamente como disse, inclusive o reload, e ainda está dando erro!



código do Medico.java:
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;
@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 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.crm = dados.crm();
this.telefone = dados.telefone();
this.especialidade = dados.especialidade();
this.endereco = new Endereco(dados.endereco());
}
}
e o mesmo erro do endereço no terminal segue:
java: constructor Endereco() is already defined in class med.voll.api.endereco.Endereco
Oi, Osmarina! Tudo bem?
Perdão pela demora em responder!
O problema aqui é a duplicação do construtor sem argumentos da classe Endereco. Isso acontece quando você usa Lombok com @NoArgsConstructor e também declara manualmente um construtor vazio na mesma classe.
O erro constructor Endereco() is already defined indica exatamente isso: existem dois construtores iguais sendo gerados.
Resolva fazendo o seguinte:
Endereco.@NoArgsConstructor do Lombok @NoArgsConstructor e deixe apenas o construtor manualA classe Endereco deve ficar nesse formato:
@Embeddable
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class Endereco {
private String logradouro;
private String bairro;
private String cep;
private String cidade;
private String uf;
private String complemento;
private String numero;
public Endereco(DadosEndereco dados) {
this.logradouro = dados.logradouro();
this.bairro = dados.bairro();
this.cep = dados.cep();
this.cidade = dados.cidade();
this.uf = dados.uf();
this.complemento = dados.complemento();
this.numero = dados.numero();
}
}
Depois disso:
Isso elimina o conflito de construtores e permite que o JPA instancie o @Embedded corretamente.
Fico à disposição.