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

Erro 500 ao tentar salvar uma consulta no banco de dados!

Professor Rodrigo espero que esteja tudo bem contigo, estou tendo um problema no momento de salvar uma consulta no banco de dados, tanto com o médico escolhido, quanto com o médico aleatório, as outras validações estão funcionando certinho. Já revisei o código, visitei o fórum e nada, não consegui identificar o erro. Aqui vão as telas: Enviando uma requisição com a escolha de um médico aleatórioEnviando uma requisição já com o médico escolhido

2 respostas
solução!

Olá Everaldo! Tudo bem?

Pelo que você descreveu e pelas imagens que você compartilhou, parece que o erro 500 está ocorrendo devido a um problema na consulta SQL executada pelo JPA. A mensagem de erro indica que há uma coluna desconhecida c1_0.data na cláusula where.

Esse tipo de erro geralmente ocorre quando há um problema no mapeamento das entidades ou na definição das consultas JPQL/HQL. Vamos verificar alguns pontos que podem estar causando esse problema:

  1. Verifique a Entidade Consulta: Certifique-se de que a coluna data está corretamente mapeada na entidade Consulta.

    @Entity
    public class Consulta {
        // outros campos
    
        @Column(name = "data")
        private LocalDateTime data;
    
        // getters e setters
    }
    
  2. Verifique o Repositório: Certifique-se de que a consulta JPQL/HQL está correta e que todos os campos referenciados existem na entidade.

    public interface ConsultaRepository extends JpaRepository<Consulta, Long> {
        @Query("select c from Consulta c where c.medico.id is null and c.data >= :data")
        List<Consulta> findConsultasSemMedico(@Param("data") LocalDateTime data);
    }
    
  3. Verifique o Serviço: Certifique-se de que o serviço que está chamando o repositório está passando os parâmetros corretamente.

    @Service
    public class AgendaDeConsultas {
        @Autowired
        private ConsultaRepository consultaRepository;
    
        public void agendarConsulta(DadosAgendamentoConsulta dados) {
            // lógica de agendamento
            List<Consulta> consultas = consultaRepository.findConsultasSemMedico(dados.getData());
            // mais lógica
        }
    }
    
  4. Verifique o Banco de Dados: Certifique-se de que a coluna data realmente existe na tabela consultas no banco de dados.

    DESCRIBE consultas;
    
  5. Atualize o Banco de Dados: Caso a coluna data não exista, você pode precisar atualizar o esquema do banco de dados.

    ALTER TABLE consultas ADD COLUMN data DATETIME;
    

Se após essas verificações o problema persistir, por favor, compartilhe todo o seu código, via GitHub ou Drive do Google, para podermos analisar mais detalhadamente.

Espero ter ajudado e bons estudos!

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

Obrigado Armano pela ajuda, já tinha revisado esse código "n" vezes e não consegui identificar onde estava o erro, após suas dicas fui verificando novamente e encontrei dois erros, um no mapeamento da "data", que estava como "date" e outro no "motivo_cancelamento" que estava como "motivo_cancelamneto" .

Agora sim funcionou tudo certinho.

Valeu, obrigado mais uma vez.