私はこれを読みました:
そして私の質問は:
ジョブでトランザクションを手動で管理したい場合、どうすればよいですか?
今、私はコードを持っており、上記の投稿で説明したように「@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();
しかし、それは良い解決策ではないようです。
あなたは何をお勧めします?