一尘不染

Hibernate Criteria API:获取n个随机行

hibernate

我不知道如何从条件实例中获取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个随机行?再次感谢!


阅读 315

收藏
2020-06-20

共1个答案

一尘不染

实际上,使用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()函数。

2020-06-20