3

是否可以使用 JPQL 获取随机行?例如在 SQL Server 中我会使用: select * from myTable where columnName = 4 order by newid()

谢谢, 罗德

4

2 回答 2

4

这就是我使用的。我首先获取实体的行数,然后将 fetch 查询的结果限制为随机行。这涉及两个查询,因此如果这对您来说是个问题,您可能需要观看本机查询。如果不是这里是我使用的代码:

 public <T> T randomEntity(EntityManager em, Class<T> clazz) {
      Query countQuery = em.createQuery("select count(id) from "+clazz.getName());
      long count = (Long)countQuery.getSingleResult();

      Random random = new Random();
      int number = random.nextInt((int)count);

      Query selectQuery = em.createQuery("from "+clazz.getName());
      selectQuery.setFirstResult(number);
      selectQuery.setMaxResults(1);
      return (T)selectQuery.getSingleResult();
 }
于 2010-07-27T12:03:32.070 回答
1

截至今天(2010 年 4 月 9 日),JPQL 不支持随机排序

于 2010-04-09T17:05:47.707 回答