通过JPA随机选择行

Ke.*_*Ke. 11 java mysql hibernate jpa

在Mysql中,

SELECT id FROM table ORDER BY RANDOM() LIMIT 5
Run Code Online (Sandbox Code Playgroud)

这个sql可以选择5个随机行.如何通过JPA Query(Hibernate作为提供者,Mysql数据库)来做到这一点?

谢谢.

Pas*_*ent 11

只有规范中定义的功能才能保证所有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);
Run Code Online (Sandbox Code Playgroud)

但是,我再说一遍:

  1. 这可能不适用于其他数据库.
  2. 这可能不适用于其他JPA提供商.