想要做一个考试系统,随机抽取试卷题目,原来的代码是:
发现显示出来的每个题目都是带一个[],才知道原来选择出来的是一个List。
后来把代码修改为:
本来想在by rand()后面加上limit 1,但是加上后出错,因为知道Grails使用的是Hibernate类似的,就去寻找Hiberanate的createQuery这样的方法,但是只有一个executeQuery,而且返回的也是List,没有maxResults,setFirstResult的方法,很麻烦。
后来查手册才发现,原来find方法是返回第一个记录,所以代码就改为:
但是这样做感觉效率可能会比较低,而且如果要找随机的5条就比较麻烦,因为可能会有重复的,不知道有没有更好的解决方法。
java 代码
- def artlist = Article.findAll("from Article order by rand()")
- [ article:artlist ]
后来把代码修改为:
java 代码
- def artlist = Article.findAll("from Article order by rand()")
- def art = null
- if(artlist!=null){
- art = artlist.get(0)
- }
- [ article:artlist ]
后来查手册才发现,原来find方法是返回第一个记录,所以代码就改为:
java 代码
- def artlist = Article.find("from Article order by rand()")
- [ article:artlist ]