Chỉ các chức năng được xác định trong thông số kỹ thuật mới được đảm bảo được hỗ trợ bởi tất cả các nhà cung cấp JPA và RAND
hoặc RANDOM
không. Vì vậy, tôi không nghĩ rằng bạn có thể làm điều đó trong JPQL.
Tuy nhiên, điều đó có thể xảy ra trong HQL (thứ tự theo từng điều khoản trong HQL được chuyển qua cơ sở dữ liệu, vì vậy bạn có thể sử dụng bất kỳ chức năng nào):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);
Nhưng, tôi nhắc lại:
- Điều này có thể không hoạt động với cơ sở dữ liệu khác.
- Điều này có thể không hoạt động với một nhà cung cấp JPA khác.