3
respostas

Salvar com um médico disponível na data quando não for informado um médico em especifico

Estou tentando realizar o cadastro de uma consulta, porém quando tento enviar informando apenas a especialidade que eu quero cadastrar recebo o seguinte erro: 2023-07-21T08:55:44.142-03:00 WARN 11172 --- [nio-8080-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [java.lang.NullPointerException: Cannot invoke "org.hibernate.metamodel.mapping.JdbcMapping.getJdbcValueBinder()" because "jdbcMapping" is null]

Estou enviando as informações da seguinte maneira : { //"idMedico": 1, "idPaciente": 19, "especialidade": "DERMATOLOGIA", "data": "2023-10-10T10:00" }

O projeto está no GitHub: https://github.com/ViniciusSilvaDeOliveira/spring_boot_api_projetoAlura

3 respostas

Oi!

No seu método de escolher médico aleatório, na interface MedicoRepository, você colocou o parâmetro nativeQuery = true, mas olhando o código acho que você não escreveu um SQL nativo e sim uma consulta com JPQL mesmo.

Confere isso.

O problema é que se eu não colocar esse value e o nativeQuery eu não consigo executar projeto por algum motivo, estou usando o PgAdmin 4

(value = """ select m from Medico m where m.ativo = 1 and m.especialidade = :especialidade and m.id not in( select c.medico.id from Consulta c where c.data = :data and c.motivoCancelamento is null ) order by rand() limit 1 """, nativeQuery = true)

O curso foi feito pensando no MySQL. No postgresql nao existe a funcao rand(). Você precisa então alterar para a função random(). Talvez seja por isso que aconteceu o problema