仕様で定義されている機能のみが、すべての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);
しかし、繰り返します:
- これは別のデータベースでは機能しない可能性があります。
- これは別のJPAプロバイダーでは機能しない可能性があります。