2012-09-09 19 views
6

Me gustaría obtener un objeto aleatorio de la base de datos solo con GORM, sin usar código específico de la base de datos.Objeto aleatorio de la base de datos con GORM

Actualmente estoy usando esto:

Tag.executeQuery("from Tag order by rand()", [max: Tag.count()]) 

Pero no estoy satisfecho con eso porque estoy usando la función de MySQL rand(). Algunas personas recomiendan obtener todos los ID, luego elegir uno aleatorio y luego consultar todo el objeto, pero no quiero dos consultas.

¿Hay alguna forma de GORM para hacerlo? Si no es GORM puro, entonces tal vez la solución de Hibernate haría el truco.

(he visto esta pregunta aquí Grails GORM to return random rows from table?, pero no ayuda :))

Respuesta

5

primera Usted puede conseguir un desplazamiento aleatorio, puesto max:1 y luego ejecutar la consulta con estos parámetros de paginación!
(Nota: primero tendrá que hacer un count() en su mesa, pero no es una operación muy costosa.)

+0

Gracias, eso suena como una muy buena idea. –

+0

No tuve tiempo de probarlo todavía. Pero lo elegiré como respuesta :) –

Cuestiones relacionadas