首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运行作业时更新Play Framework中的行

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

Stack Overflow用户
提问于 2012-01-06 23:02:00
回答 1查看 446关注 0票数 0

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

代码如下:

代码语言:javascript
复制
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()相同(即不更新任何内容)。有谁知道怎么解决这个问题吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-07 00:04:48

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

要实现您想要的功能,您可以创建子作业类并在主作业类中调用它。

就像这样

代码语言:javascript
复制
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();
    }
}

在你的主要工作中,你会打电话给

代码语言:javascript
复制
new SubJob(ga).now().get();

您的子作业将在另一个事务中执行保存,该事务将在子作业结束时提交。

小心,我们这种工作方式你不能回滚所有的主要工作

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8759801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档