当前位置: 首页 > 面试题库 >

Hibernate Criteria API:获取n个随机行

牟飞沉
2023-03-14
问题内容

我不知道如何从条件实例中获取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()函数。



 类似资料:
  • 如何从MongoDB中的集合中随机获取单个文档。 我如何修复代码。 我收到错误:未定义不是函数 --------------------------------------好的。我修复了----------------------------

  • 从 array 中获取 n 个唯一键随机元素。 使用Fisher-Yates算法 对数组进行打乱。 使用 Array.slice() 获取第一个 n 元素。 省略第二个参数,n 从数组中随机取得 1 个元素。 const sampleSize = ([...arr], n = 1) => { let m = arr.length; while (m) { const i = Mat

  • 问题内容: 我正在研究“如何从javascript中的数组随机访问元素”。我发现了许多与此有关的链接。 问题: 但是在这种情况下,我们只能从数组中选择一项,如果我们想要多个元素,那么我们将如何实现这一点,所以请仅从该语句中获取一个数组中的多个元素。 问题答案: 尝试以下无损快速功能:

  • 它给我所有的数据,但我只需要3个随机数据。我有谷歌关于获得随机N没有数据,但为什么不为我工作?

  • 问题内容: 我有大约1000行的表。我必须将n个随机行的表中的column(“ X”)更新为’Y’。为此,我可以有以下查询 是否有另一种有效的方式来编写此查询。该表没有索引。请帮忙? 问题答案: 我将使用ROWID: 我使用ROWID的实际原因并不是为了提高效率(它仍然会进行全表扫描)-如果列不是唯一的,则您的SQL可能不会更新所需的行数。 只有1000行,您不必担心效率(也许有一亿行)。该表上没