GORM数据库中的随机对象

时间:2012-09-09 22:20:13

标签: hibernate grails gorm

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

目前我正在使用它:

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

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

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

(我在这里看到了这个问题Grails GORM to return random rows from table?,但它没有帮助:))

1 个答案:

答案 0 :(得分:5)

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