如何从grails中的数据库中选择随机行?

时间:2016-05-11 11:59:16

标签: hibernate grails select random

我正在尝试在Grails中制作一个简单的测验应用程序。我有问题需要从问题表中选择一个随机行并显示,每次用户提交答案时,问题必须不同。 我是grails的新手......

我有一个名为QuizController.groovy的控制器类 在控制器中,我有 playQuiz(),它应该一次呈现一个名为playQuiz.gsp的gsp页面。

我的问题域名是以下的问题 int id     字符串问题     字符串answer1     字符串答案2     字符串answer3     字符串答案4     int correctAnswer

在数据库中,可能会有数据填充数据,我需要随机获取一个数据。

我需要帮助以随机顺序从数据库中提取数据。

提前致谢!

2 个答案:

答案 0 :(得分:2)

试试这个,用Grails 2.5.3测试:

{{1}}

答案 1 :(得分:0)

这不是很困难。 Hibernate Criteria具有指定第一个结果索引的方法:setFirstResult(int firstResult)和最大行数:setMaxResults(int maxResults)

int rowsCount = getRowsCount();
int randomRowIndex = getRandomNumberLessThan(rowsCount);

criteria.setFirstResult(randomRowIndex);
criteria.setMaxResults(1);

您也可以使用HQL

Query query = session.createQuery("from Question");
query.setFirstResult(randomRowIndex);
query.setMaxResults(1);

您需要使用其他限制才能提出之前提出的问题。

相关问题