如何从数据库表中随机选择行?我正在使用JPA,并且在可能的情况下希望使用Criteria API。我知道有一个SQL等效项,例如:

    SELECT TOP 5 Id, Name FROM mNames
    ORDER BY NEWID()


但是,我该如何使用JPQL和Criteria API呢?
可能是使用NativeQuery吗?有没有更好的办法?

最佳答案

如果您只需要一个随机行,则可以执行以下操作:

//random is instance of java's Random class, and numberOfRows is total number of rows in the table
long rowIndex = random.nextLong()%numberOfRows;

TypedQuery typedQuery = ...;
typedQuery.setFirstResult(rowIndex);
typedQuery.setMaxResults(1);


我没有测试代码,但您应该明白这一点。

09-05 01:08