Hibernate 使用GORM从数据库中提取随机对象

Hibernate 使用GORM从数据库中提取随机对象,hibernate,grails,gorm,Hibernate,Grails,Gorm,我希望只使用GORM从数据库中获取随机对象,而不使用特定于数据库的代码 目前我使用的是: Tag.executeQuery("from Tag order by rand()", [max: Tag.count()]) 但我对此并不满意,因为我使用的是mysql的rand()函数。有些人建议获取所有ID,然后选择一个随机ID,然后查询整个对象,但我不想要两个查询 有什么办法可以做到这一点吗?如果不是纯粹的GORM,那么Hibernate解决方案可能会起作用 (我在这里看到了这个问题,但它没有帮

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

目前我使用的是:

Tag.executeQuery("from Tag order by rand()", [max: Tag.count()])
但我对此并不满意,因为我使用的是mysql的rand()函数。有些人建议获取所有ID,然后选择一个随机ID,然后查询整个对象,但我不想要两个查询

有什么办法可以做到这一点吗?如果不是纯粹的GORM,那么Hibernate解决方案可能会起作用


(我在这里看到了这个问题,但它没有帮助:)

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

我还没有时间测试它。但我会选择它作为答案:)