我读过这个:
我的问题是:
如果我想在 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,作业仍然会启动自己的事务。
我可以这样修复它:
MyEntity.em().getTransaction().commit(); // commit previous started transaction
MyEntity.em().getTransaction().begin();
但这似乎不是一个好的解决方案。
你会推荐什么?