我不知道如何从条件实例中获取n个随机行:
Criteria criteria = session.createCriteria(Table.class); criteria.add(Restrictions.eq('fieldVariable', anyValue)); ...
那呢 我找不到使用Criteria API的任何文档
这是否意味着我应该改用HQL?
谢谢!
编辑:我通过以下方式获得行数:
int max = criteria.setProjecxtion(Projections.rowCount()).uniqueResult();
如何获取索引介于0和max之间的n个随机行?再次感谢!
实际上,使用Criteria进行一些调整是可能的。方法如下:
Criteria criteria = session.createCriteria(Table.class); criteria.add(Restrictions.eq("fieldVariable", anyValue)); criteria.add(Restrictions.sqlRestriction("1=1 order by rand()")); criteria.setMaxResults(5); return criteria.list();
任何Restrictions.sqlRestriction将添加关键字“和”;为了消除其影响,我们将添加一个虚拟条件并注入rand()函数。