【发布时间】:2013-01-01 07:31:56
【问题描述】:
我已阅读this:
我的问题是:
如果我想在 Job 中手动管理我的交易,我应该怎么做?
现在我有一个代码并在那里使用“@NoTransaction”,就像上面帖子中解释的那样:
@NoTransaction
@Override
public JobResult doJobWithResult() throws Exception {
...
JobResult result = new JobResult();
try {
//MyEntity.em().getTransaction().commit();
MyEntity.em().getTransaction().begin();
....
但是,但是在交易开始的那一刻(begin())我还是报错了:
java.lang.IllegalStateException: 事务已经激活
因此,即使我使用@NoTransaction,Job 仍然会启动它自己的事务。
我可以这样解决:
MyEntity.em().getTransaction().commit(); // commit previous started transaction
MyEntity.em().getTransaction().begin();
但这似乎不是一个好的解决方案。
你会推荐什么?
【问题讨论】:
标签: jpa transactions playframework