3
respostas

[Dúvida] Erro com o código criarPagamento no PagamentoService

No método de criar um pagamento, está ocorrendo um erro na linha de código pagamento.setStatus(Status.CRIADO); e não consigo resolver.

Vi que um outro aluno também passou por isso, porém, não houve resposta sobre o problema no tópico que fez.

Erro:

java: cannot find symbol symbol: method setStatus(br.com.appfood.ms_pagamentos.model.Status) location: variable pagamento of type br.com.appfood.ms_pagamentos.model.Pagamento

public PagamentoDto criarPagamento(PagamentoDto dto) {
        Pagamento pagamento = modelMapper.map(dto, Pagamento.class);
        pagamento.setStatus(Status.CRIADO);
        repository.save(pagamento);

        return modelMapper.map(pagamento, PagamentoDto.class);
    }
3 respostas

Olá Camilo! Como vai?

Pelo erro que você está enfrentando, parece que o método setStatus não está definido na classe Pagamento. Isso pode ocorrer se a classe Pagamento não tiver um método setter para o atributo status. Aqui estão algumas sugestões para resolver o problema:

  1. Verifique a Classe Pagamento: Certifique-se de que a classe Pagamento possui um método setStatus que aceita um parâmetro do tipo Status. A classe deve ter algo parecido com isso:

    public class Pagamento {
        private Status status;
    
        public void setStatus(Status status) {
            this.status = status;
        }
    
        // Outros métodos e atributos...
    }
    
  2. Importações Corretas: Verifique se o enum Status está corretamente importado e se ele está no mesmo pacote ou em um pacote acessível pela classe Pagamento.

  3. Recompilação do Projeto: Às vezes, o ambiente de desenvolvimento pode não detectar mudanças recentes no código. Tente limpar e recompilar o projeto para garantir que todas as mudanças sejam aplicadas.

  4. Verifique o ModelMapper: Certifique-se de que o modelMapper está corretamente configurado para mapear os objetos PagamentoDto para Pagamento. Isso não deve afetar o método setStatus, mas é sempre bom garantir que o mapeamento esteja correto.

Se após essas verificações o problema persistir, pode ser útil revisar a estrutura do seu projeto para garantir que todas as dependências e classes estão configuradas corretamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Muito obrigado pelas dicas, irei conferir.

Só uma dúvida: O método setStatus não deveria ser acessível com a presença do Lombok no projeto?

Ps: Fiz um teste e criei os construtores e Getter e Setters da classe pagamento, esse erro comentado parou de acorrer. Detalhe, antes disso, verifiquei se o Lombok estava instalado no Intellij e, aparentemente, está sim, tudo certo. Primeiro adicionei apenas o método setter e foi sugerido utilizar pelo Lombok, aí começou a aparecer erros quanto aos outros atributos. Os erros só pararam mesmo de aparecer quando criei os getter e setter, mesmo utilizando o Lombok.

Boa tarde, Camilo! Tudo bem?

Infelizmente têm ocorrido esses problemas de captura de Annotations por parte do Lombok. As soluções nesses casos se limitam em estabelecer os Getters e Setters, como você bem fez, ou apagar os pacotes instalados do Lombok e instalar novamente no arquivo "pom.xml" que contém a dependência do mesmo.

No mais, fico à disposição!