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

[Dúvida] Erros na query usando o Java 11

Eu estou fazendo os cursos usando o Java 11, porque é a versão usada na empresa, e até agora eu tinha conseguido adaptar bem as features existentes no 17 para o meu código. Já tentei muita coisa, mas ao rodar aparece esse erro na minha query Medico escolherMedicoAleatorioLivreNaData(Especialidade especialidade, LocalDateTime data); do MedicoRepository: unexpected token: limit.

Essa é a query como eu estou rodando:

@Query("select m from Medico m where m.ativo = TRUE and m.especialidade = :especialidade and m.id not in" +
            "(select c.medico.id from Consulta c where c.data = :data and c.motivo is null) " +
            "order by rand() limit 1")

Parece que ele não está reconhecendo a palavra limit, pois ao tirar o limit 1 o código funciona. Alguém sabe se isso é um problema do Java 11 ou como resolver isso?

2 respostas

Oi Juliana!

Pode utilizar o Java 11 e fazer as adaptações das coisas mostradas que não funcionam nessa versão :)

Quanto ao limit, não é problema do Java 11. Você está utilizando o MySQL? Pode ser que em outros bancos não exista o limit e você precise alterar para outro comando similar do banco sendo utilizado.

solução!

Oi, Rodrigo! Eu estou usando o MySQL. Eu dei uma pesquisada aqui, e agora o limit funciona, mas só quando eu coloco o parâmetro nativeQuery da @Query como true. Aí ficou assim:

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