【发布时间】:2011-01-28 09:11:55
【问题描述】:
在Mysql中,
SELECT id FROM table ORDER BY RANDOM() LIMIT 5
这个 sql 可以随机选择 5 行。如何通过 JPA Query(Hibernate 作为提供者,Mysql 数据库)来做到这一点?
谢谢。
【问题讨论】:
在Mysql中,
SELECT id FROM table ORDER BY RANDOM() LIMIT 5
这个 sql 可以随机选择 5 行。如何通过 JPA Query(Hibernate 作为提供者,Mysql 数据库)来做到这一点?
谢谢。
【问题讨论】:
只有规范中定义的功能保证被所有 JPA 提供者支持,RAND 或 RANDOM 不支持。所以我认为你不能在 JPQL 中做到这一点。
但是,在 HQL 中是可能的(HQL 中的 order by 子句传递到数据库,因此您可以使用任何函数):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);
但是,我再说一遍:
【讨论】:
尝试预先计算随机数并使用预先计算的随机值构建您的 JPQL/HQL/本机查询。
【讨论】: