是否可以使用JPQL获取随机行?例如在SQL Server中我会使用: 从myTable中选择*,其中columnName = 4 order by newid()
谢谢, 杆
答案 0 :(得分:4)
这就是我使用的。我首先获取实体的行数,然后将获取查询的结果限制为随机行。这涉及两个查询,因此如果这对您来说是个问题,您可能需要查看本机查询。如果不是这里是我使用的代码:
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();
}
答案 1 :(得分:1)
截至今天(2010年4月9日),JPQL不支持随机排序