Random 使用JPQL获取随机行

Random 使用JPQL获取随机行,random,jpql,Random,Jpql,可以使用JPQL获取随机行吗?例如,在SQL Server中,我将使用: 从myTable中选择*,其中columnName=4 order by newid() 谢谢, Rod从今天(2010年4月9日)起,JPQL不支持随机排序这就是我使用的。首先获取实体的行数,然后将fetch查询的结果限制为随机行。这涉及到两个查询,因此如果这对您来说是一个问题,那么您可能需要查看本机查询。如果没有,以下是我使用的代码: public <T> T randomEntity(EntityMan

可以使用JPQL获取随机行吗?例如,在SQL Server中,我将使用: 从myTable中选择*,其中columnName=4 order by newid()

谢谢,
Rod

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

这就是我使用的。首先获取实体的行数,然后将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();
 }
public T random实体(实体管理器em,类clazz){
Query countQuery=em.createQuery(“从“+clazz.getName()中选择计数(id));
long count=(long)countQuery.getSingleResult();
随机=新随机();
int number=random.nextInt((int)count);
Query selectQuery=em.createQuery(“from”+clazz.getName());
选择Query.setFirstResult(数字);
选择query.setMaxResults(1);
return(T)selectQuery.getSingleResult();
}