我必须从用户表中随机选择10条记录,
下面是提供10条随机记录的SQL查询。
SELECT * FROM user_table ORDER BY RANDOM() LIMIT 10
什么是JPQL替代品,我们对JPQL是否支持Random()?使用RANDOM()是一个好习惯吗?
答案 0 :(得分:2)
我不知道JPA中是否有RANDOM
。作为替代解决方案,您可以使用以下技巧:
Query queryCount = em.createQuery("SELECT COUNT(u) FROM UserTable u");
Long size = (Long) queryCount.getSingleResult();
//I use this way of Java8, you can use the way you see it better to generate random indexes
int[] index = new Random().ints(0, size, 10).toArray();
Query query = em.createQuery("SELECT u FROM UserTable u WHERE INDEX(u) IN :indexs");
^^^^^^^^^^^^^^^^^^^
query.setParameter("indexs", index);
List<UserTable> listUsersRandom = query.getResultList();
全球创意
此解决方案基于INDEX。这个想法是:
size
之间的索引列表