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

Problemas com a query para escolher um médico aleatório

Para realizar a escolha de um médico aleatório, a query proposta é essa:

@Query("""
                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
                )
                order by rand()
                limit 1
                """)

Estou tendo problemas, pois as duas últimas linhas (order by rand e limit) não compilam. Em ambas, o IDE avisa que esperava algo diferente do que foi escrito:

No fim das contas, consegui fazer as coisas funcionarem rescrevendo a query com SQL e utilizando o parâmetro nativeQuery na anotação. Porém, eu queria entender por que no vídeo da aula funcionou normalmente com JPQL. Aqui, essas duas últimas linhas não dão certo de jeito nenhum seguindo o mesmo modelo da aula.

3 respostas

Oi Douglas!

Você está utilizando o IntelliJ? Não era pra dar erro de compilação, pois é uma String :D

Sim, estou usando o Intellij!

Perdão. Não há erro de compilação, realmente. A aplicação roda sem problemas.

Porém, os dois erros

expression expected, got ')'
',', <operator>, ASC, DESC or NULLS expected, got 'LIMIT'

referentes às linhas "order by rand()" e "limit 1" continuam aparecendo no repositório.

Eles devem ser ignorados por hora?

solução!

Pode ignorar então. Deve ser alguma validação que está habilitada e não reconheceu essas funções na query.