En primer lugar, tenga en cuenta que no existe una forma estándar de hacer esto en SQL, cada motor de base de datos utiliza su propia sintaxis patentada . Con MySQL, la instrucción SQL para obtener 5 filas aleatorias serían:
SELECT column FROM table
ORDER BY RAND()
LIMIT 5
Y usted podría escribir esta consulta en HQL porque la orden por cláusula en HQL se pasa a través de la base de datos esta manera puede utilizar cualquier función .
String query = "SELECT e.attribute FROM MyEntity e ORDER BY RAND()";
Query q = em.createQuery(query);
q.setMaxResults(5);
Sin embargo, a diferencia de HQL, la API de criterios actualmente no es compatible con ORDER BY SQL Native (ver HHH-2381) y en el estado actual, se tendría que subclase de la clase Order
para implementar esta característica. Esto es posible, refiérase al problema de Jira, pero no disponible de manera inmediata.
Entonces, si realmente necesita esta consulta, mi recomendación sería usar HQL. Solo tenga en cuenta que no será portátil.
Otros lectores que desee comprobar el puesto SQL to Select a random row from a database table para ver cómo implementar esto con MySQL, PostgreSQL, Microsoft SQL Server, IBM DB2 y Oracle.
¡Eso fue conveniente y me ayudó! – Nischal
No devuelve registros únicos ... – Imran
¿Cuál es el propósito de 1 = 1 en restricciones sql. Obtengo el resultado correcto con él, y sin esto recibo un error –