我不知道如何从条件实例中获取 n 个随机行:
Criteria criteria = session.createCriteria(Table.class);
criteria.add(Restrictions.eq('fieldVariable', anyValue));
...
然后呢?我找不到任何带有 Criteria API 的文档
这是否意味着我应该改用 HQL?
谢谢!
编辑:我通过以下方式获得行数:
int max = criteria.setProjecxtion(Projections.rowCount()).uniqueResult();
如何获取索引在 0 到最大值之间的 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 都会添加关键字'and';所以要取消它的效果, 我们将添加一个虚拟条件并注入(inject)我们的 rand() 函数。
关于java - hibernate 标准 API : get n random rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810693/