6

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

目前我正在使用这个:

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

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

有没有一种 GORM 方法可以做到这一点?如果不是纯 GORM,那么也许 Hibernate 解决方案可以解决问题。

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

4

1 回答 1

5

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

于 2012-09-10T05:21:11.353 回答