GORM数据库中的随机对象

Vuk*_*lić 6 grails hibernate grails-orm

我想只使用GORM从数据库中获取一个随机对象,而不使用特定于数据库的代码.

目前我正在使用这个:

Tag.executeQuery("from Tag order by rand()", [max: Tag.count()])
Run Code Online (Sandbox Code Playgroud)

但我对此并不满意,因为我正在使用mysql的rand()函数.有些人建议获取所有ID,然后选择一个随机的ID,然后查询整个对象,但我不想要两个查询.

有GORM方法吗?如果不是纯GORM,那么也许Hibernate解决方案可以解决问题.

(我在这里看到这个问题Grails GORM从表中返回随机行?,但它没有帮助:))

Ath*_*hri 5

您可以先获取随机偏移量,max:1然后使用这些分页参数执行查询!
(注意:你必须先count()在你的桌子上做一个,但这不是一个非常昂贵的操作.)