EntityManager em = EMF.get().createEntityManager();
EntityTransaction tx = null;
List<Profile> list = null;
Query q = null;
try{
tx = em.getTransaction();
tx.begin();
q = em.createNamedQuery("Profile.getRandomProfile");
q.setParameter("random", Math.random());
q.setMaxResults(8);
list = (List<Profile>) q.getResultList();
if (list != null){
Collections.shuffle(list);
}
tx.commit();
} catch(NoResultException ex){
System.out.println("ERROR CATCHED: " +ex.getMessage());
if(tx != null && tx.isActive())
tx.rollback();
} catch(Exception e){
e.printStackTrace();
}
finally{
em.close();
}
打乱列表有错误:
java.lang.UnsupportedOperationException: Query result sets are not modifiable
如何克服这个问题?
最佳答案
将结果复制到二级列表并对其进行洗牌,而不是查询结果列表。
ArrayList copyList = new ArrayList();
Collections.copy(copyList,list);
Collections.shuffle(copyList);
关于java - 在 JPA 中修改查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11132427/