2012-05-29 91 views
2

我有下面的代码将查询实体,并设置一个随机数:更新查询结果JPA

EntityManager em = EMF.get().createEntityManager(); 
    Profile user = null; 
    Query q = null; 
    try{ 
     q = em.createNamedQuery("Profile.getRandomProfile"); 
     q.setParameter("random", Math.random()); 
     q.setMaxResults(1); 
     user = (Profile) q.getSingleResult(); 

     user.setRandom(Math.random()); 

    } catch(NoResultException ex){ 
      ex.printStackTrace(); 
    } 

我认为这样做会更新配置文件的随机属性。为什么不更新?如何更新随机属性?

+1

你应该确保上面的代码事务内部执行。如何做到这一点取决于你的环境(EJB容器?Spring?基础应用程序?)。 –

+0

基本应用。正如James所建议的那样,它现在可以工作。 –

回答

0

您不保存回数据库。您应该使用merge()方法一个EntityManager在事务内更新

+0

不,他不应该这样做。 JPA自动更改连接的实体,并在提交事务之前自动刷新。 –