java - 从数据库表中随机选择实体?

标签 java database jakarta-ee jpa jpql

如何从数据库表中随机选择行?我正在使用 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);

我没有测试代码,但你应该明白。

关于java - 从数据库表中随机选择实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24539038/

相关文章:

database - magento - 迁移销售表

java - Android 应用程序的后端建议

java - 循环内的数据库调用有其他选择吗?

java - If 语句不适用于 Getter 和 Setter 方法

java - GWT 请求工厂 : can not get a list of valueproxy inside an EntityProxy

java - 每次我实例化新对象时,属性都会回到零

mysql - 制作数据库的本地副本

java - HQL从方法中获取值

java - Apache 汤姆霍克 <t :inputFileUpload> tag not working

java - 子组件宽度超过父组件