java - 在 JPA 中修改查询结果

标签 java google-app-engine jpa

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/

相关文章:

java - 使用 Quartz 轮询外部服务并通过 Atmosphere 将结果发送给客户端?

javax.smartcardio 读取所有智能卡

java - Android Studio : Editing a . txt 文件在内部存储中与 EditText

google-app-engine - 对于简单和复杂的查询,如何计算数据存储写入操作(写入总数)?

jpa - Spring Data 与集成测试 OneToMany ManyToOne

java - 为什么 SSL 在构建 jar 中不起作用?

java - 无法部署到谷歌应用引擎

python - 谷歌应用引擎任务队列示例

JavaEE : Which is the good way to find an entity?

java - Spring JPA - 通过 EmbeddedId 部分查找