是否可以使用 JPQL 获取随机行?例如在 SQL Server 中我会使用: select * from myTable where columnName = 4 order by newid()
谢谢, 罗德
这就是我使用的。我首先获取实体的行数,然后将 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 年 4 月 9 日),JPQL 不支持随机排序