Olá, Gustavo.
Tudo bem?
Parece que você encontrou uma alternativa para resolver o problema de buscar uma frase aleatória, que é ótimo!
Na aula, foi utilizada a função RANDOM do JPQL para buscar uma frase aleatória. No entanto, parece que você encontrou um problema com essa abordagem e decidiu usar a função RAND() do SQL.
Aqui está o código usado na aula:
@Query("SELECT f FROM Frase f order by function('RANDOM') LIMIT 1")
Frase buscaFraseAleatória();
E aqui está o código que você sugeriu:
@Query("SELECT f FROM Frases f order by rand() limit 1")
Frases buscarFraseAleatoria();
A principal diferença entre os dois é a função usada para gerar um número aleatório. No primeiro caso, foi utilizada a função RANDOM() do JPQL, enquanto no segundo caso, você usou a função RAND() do SQL.
A função RANDOM() é uma função do JPQL e não é suportada por todos os bancos de dados, enquanto a função RAND() é uma função do SQL e é suportada pela maioria dos bancos de dados.
Portanto, se você está usando um banco de dados que não suporta a função RANDOM(), a sua solução é uma ótima alternativa.
No entanto, vale lembrar que o JPQL é uma linguagem independente de banco de dados, o que significa que ele deve funcionar com qualquer banco de dados que suporte JPA. Portanto, ao usar funções específicas do SQL, como RAND(), você pode perder essa independência de banco de dados.
Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.