1
resposta

[Dúvida] "this.repository" is null

"trace": Cannot invoke "med.voll.api.medicos.models.MedicoRepository.findAll()" because "this.repository" is null

package med.voll.api.medicos.dtos;

import med.voll.api.medicos.enums.EspecialidadeMedico;
import med.voll.api.medicos.models.MedicoModel;

public record DadosListMedicosDTO(
        String nome,
        String email,
        String crm,
        EspecialidadeMedico especialidade) {

    public DadosListMedicosDTO(MedicoModel medicoModel) {
        this(medicoModel.getNome(), medicoModel.getEmail(), medicoModel.getCrm(), medicoModel.getEspecialidade_medicos());
    }
}
package med.voll.api.controller;

import jakarta.validation.Valid;
import jdk.dynalink.linker.LinkerServices;
import med.voll.api.medicos.dtos.DadosCadastroMedicosDTO;
import med.voll.api.medicos.dtos.DadosListMedicosDTO;
import med.voll.api.medicos.models.MedicoModel;
import med.voll.api.medicos.models.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
    private MedicoRepository repository;

    @PostMapping
    @Transactional
    public void cadastrar(@RequestBody @Valid DadosCadastroMedicosDTO dadosMedicos) {
        repository.save(new MedicoModel(dadosMedicos));
    }

    @GetMapping
    private List<DadosListMedicosDTO> listAll() {
        return repository.findAll().stream().map(DadosListMedicosDTO::new).toList();
    }

}
1 resposta

Oi

Geralmente ocorre esse erro quando está faltando a anotação @Autowired no atributo, mas o seu atributo repository, na classe controller, está anotado corretamente.

Chegou a reiniciar o projeto para testar novamente?

Manda aqui o código das suas classes MedicoRepository e também ApiApplication