Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] Erro cadastrando médico

github da app https://github.com/uiratan/alure-medvollapi

Olá, estou recebendo o seguinte erro ao cadastrar um médico:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Parece que o repository está retornando null e não sei o motivo, seguem os códigos das classes.

MedicoController

package med.voll.api.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
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;

import jakarta.transaction.Transactional;
import med.voll.api.medico.DadosCadastroMedico;
import med.voll.api.medico.Medico;
import med.voll.api.medico.MedicoRepository;

@RestController
@RequestMapping("medicos")
public class MedicoController {

    @Autowired
    private MedicoRepository repository;

    @PostMapping
    @Transactional
    private void cadastrar(@RequestBody DadosCadastroMedico dados) {
        //medicoRepository.save(new Medico(dados));
        repository.save(new Medico(dados));
    }


}

Medico

package med.voll.api.medico;

import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import med.voll.api.endereco.DadosEndereco;
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 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());
    }
}    

MedicoRepository

package med.voll.api.medico;

import org.springframework.data.jpa.repository.JpaRepository;

public interface MedicoRepository extends JpaRepository<Medico, Long>{

}

Log da inicialização até a tentativa de cadastro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAgradeço muito a ajuda!

Att.

2 respostas

Oi Uiratan!

Esse erro somente deveria acontecer se no seu controller o atributo repository não estivesse com @Autowired, mas ele está :D

Pode ser que o projeto não pegou as últimas mudanças no código. Verifica no menu superior Project se a opção Build Project Autromatically está marcada.

Pare a aplicação e faça um build no projeto (menu superior Project -> Clean) e verja se resolve.

solução!

Fala Rodrigo, blz?

Então, simplesmente não faço ideia, essas opções que vc citou ja estavam marcadas e também ja tinha dado o clean. Criei vários projetos seguindo o passo a passo em diversas IDEs e nada. Inclusive teve um projeto que não rodava em um diretório mas ao mudar de diretório ele rodava. Essas pesquisas de como resolver essas coisas ficarão pra depois hehe

Resolvi pegando o projeto final do curso e ele rodou. Troquei a pasta src e o pom pelo meu e não deu nenhum problema.

Valeu a ajuda, abraço.