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

Não estou conseguindo retornar os atributos no GET

  • Medico controller
@RestController
@RequestMapping("medicos")
public class MedicoController {

    @Autowired
    private MedicoRepository repository;

    @PostMapping
    @Transactional
    public void cadastrar(@RequestBody @Valid DadosCadastroMedico dados) {
        repository.save(new Medico(dados));
    }

    @GetMapping
    public List<DadosListagemMedico> listar() {
        return repository.findAll().stream().map(DadosListagemMedico::new).toList();
    }
}
  • Dados Listagem Medico
public record DadosListagemMedico(String nome, String email,String crm,Especialidade especialidade) {

    public DadosListagemMedico(Medico medico){
        this(medico.getNome(),medico.getEmail(),medico.getCrm(),medico.getEspecialidade); -------> não retornaram o GET
    }
}
  • Entidade Medico
@Table(name = "medicos")
@Entity(name = "Medico")
@Getter  ---------> Era pra criar os getters?!
@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());
    }
}
4 respostas
solução!

Olá, Ivony! Como vai?

Pelo que entendi, você está com dificuldades para retornar os atributos no GET, certo? Vamos ver se consigo te ajudar.

Pelo que pude perceber no seu código, você está usando a anotação @Getter do Lombok na sua entidade Medico, o que é correto. Essa anotação gera automaticamente os métodos getters para todos os atributos da sua classe.

No entanto, parece que os métodos getters não estão sendo reconhecidos no seu DTO DadosListagemMedico. Isso pode estar acontecendo por alguns motivos.

Um deles pode ser a versão do Lombok que você está utilizando. Algumas versões mais antigas do Lombok podem apresentar problemas de compatibilidade com algumas IDEs, fazendo com que as anotações não funcionem corretamente. Nesse caso, atualizar a versão do Lombok pode resolver o problema.

Outra possibilidade é que sua IDE não esteja configurada corretamente para trabalhar com o Lombok. Se você estiver usando o IntelliJ IDEA, por exemplo, precisa instalar e habilitar o plugin do Lombok. No Eclipse, é preciso adicionar o Lombok como um agente de instrumentação Java.

Se nenhuma dessas soluções funcionar, uma alternativa é criar manualmente os métodos getters na sua entidade Medico. Embora isso torne o código um pouco mais verboso, é uma maneira de garantir que os métodos getters estejam disponíveis para serem usados no seu DTO.

Espero ter ajudado e bons estudos!

Olá muito obrigado configurei o Lombok deu certinho :)

Ivony !! Ola como vai ? como vc configurou o lombok?

Aqui tem um tutorial: https://dicasdejava.com.br/como-configurar-o-lombok-no-eclipse/