Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Java 运行作业时更新Play Framework中的行_Java_Database_Jpa_Playframework_Persistence - Fatal编程技术网

Java 运行作业时更新Play Framework中的行

Java 运行作业时更新Play Framework中的行,java,database,jpa,playframework,persistence,Java,Database,Jpa,Playframework,Persistence,我在玩一个工作!这需要一段时间(超过1小时)。在这项工作中,我想保存一些id到我的MySQL数据库。但是,在写入数据之后,如果我在终端中查询数据库(使用MySQL监视器),则行似乎不会被更新。所以我需要在作业运行时更新此数据 代码如下: this.ga.lastUID = msgnums[i-1]; this.ga.count = count[i-1]; this.ga.merge(); 其中this.ga是我的JPA模型的实例 如果我使用save()方法,我会得到一个分离的异常。如果我使用f

我在玩一个工作!这需要一段时间(超过1小时)。在这项工作中,我想保存一些id到我的MySQL数据库。但是,在写入数据之后,如果我在终端中查询数据库(使用MySQL监视器),则行似乎不会被更新。所以我需要在作业运行时更新此数据

代码如下:

this.ga.lastUID = msgnums[i-1];
this.ga.count = count[i-1];
this.ga.merge();
其中this.ga是我的JPA模型的实例

如果我使用save()方法,我会得到一个分离的异常。如果我使用findById(this.ga.id)方法来获取一个新对象,我可以使用save(),但它的结果与merge()相同(即,不更新任何内容)。有人知道如何解决这个问题吗


谢谢

作业执行是事务性的。你在工作中所做的一切都将在工作结束时提交

为了实现您想要的,您可以创建subjob类并在main类中调用它

差不多

public class SubJob extends Job {

    private Ga ga;

    public SubJob(Ga ga) {
        this.ga = ga;
    }

    @Override
    public doJob() throws Exception {
        ga = ga.merge();
        ga.lastUID = msgnums[i-1];
        ga.count = count[i-1];
        ga.save();
    }
}
在你的主要工作中,你打电话给

new SubJob(ga).now().get();
您的子对象将在另一个事务中执行保存,该事务将在子对象结束时提交


小心,我们使用这种工作方式,您无法回滚所有主作业

作业执行是事务性的。你在工作中所做的一切都将在工作结束时提交

为了实现您想要的,您可以创建subjob类并在main类中调用它

差不多

public class SubJob extends Job {

    private Ga ga;

    public SubJob(Ga ga) {
        this.ga = ga;
    }

    @Override
    public doJob() throws Exception {
        ga = ga.merge();
        ga.lastUID = msgnums[i-1];
        ga.count = count[i-1];
        ga.save();
    }
}
在你的主要工作中,你打电话给

new SubJob(ga).now().get();
您的子对象将在另一个事务中执行保存,该事务将在子对象结束时提交

小心,我们使用这种工作方式,您不能回滚所有主要工作