Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JPA中更新查询结果_Jpa_Persistence - Fatal编程技术网

在JPA中更新查询结果

在JPA中更新查询结果,jpa,persistence,Jpa,Persistence,我有下面的代码,它将查询一个实体并设置一个随机数: EntityManager em = EMF.get().createEntityManager(); Profile user = null; Query q = null; try{ q = em.createNamedQuery("Profile.getRandomProfile"); q.setParameter("random", Math.random());

我有下面的代码,它将查询一个实体并设置一个随机数:

    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();
    }

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

您没有将其保存回数据库。您应该使用merge()方法one EntityManager在事务中进行更新

您需要围绕更改开始并提交事务

看,


不,他不应该那样做。JPA自动对附加的实体进行持久化更改,并在提交事务之前自动刷新。您应该确保在事务中执行上述代码。如何做到这一点取决于您的环境(EJB容器?Spring?基本应用程序?)。基本应用程序。正如詹姆斯所建议的那样,它现在起作用了。