En MySQL,selectas filas al azar a través de la APP
SELECT id FROM table ORDER BY RANDOM() LIMIT 5
este SQL puede seleccionar 5 filas aleatorias. ¿Cómo hacer esto a través de JPA Query (Hibernate como proveedor, base de datos Mysql)?
Gracias.
En MySQL,selectas filas al azar a través de la APP
SELECT id FROM table ORDER BY RANDOM() LIMIT 5
este SQL puede seleccionar 5 filas aleatorias. ¿Cómo hacer esto a través de JPA Query (Hibernate como proveedor, base de datos Mysql)?
Gracias.
Solo las funciones definidas en la especificación están garantizadas para ser compatibles con todos los proveedores de JPA y RAND
o RANDOM
no lo son. Entonces no creo que puedas hacerlo en JPQL.
Sin embargo, sería posible en HQL (la orden por cláusula en HQL se pasa a través de la base de datos, por lo que se puede utilizar cualquier función):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);
Pero, repito:
Intente calcular el azar de antemano y construya su consulta JPQL/HQL/nativa con el valor aleatorio precalculado.
rand() o al azar() generan un valor aleatorio * para cada fila * por lo que la pregeneración de un solo valor aleatorio no funcionará –