How use JTA with JpaPagingItemReader when calls getTransaction()?
Per spec, cannot call em.getTransaction() when in a JTA transaction.
Since JpaPagingItemReader.doReadPage() has:
Code:
EntityTransaction tx = entityManager.getTransaction();
Running with JTA yields this problem:
Code:
10:28:40.408 [main] INFO atomikos: createCompositeTransaction ( 300000 ): created new ROOT transaction with id cmr0000100073
10:28:40.413 [main] DEBUG o.s.b.repeat.support.RepeatTemplate: Starting repeat context.
10:28:40.413 [main] DEBUG o.s.b.repeat.support.RepeatTemplate: Repeat operation about to start at count=1
10:28:40.413 [main] DEBUG o.s.b.i.database.JpaPagingItemReader: Reading page 0
10:28:40.417 [main] DEBUG o.s.b.repeat.support.RepeatTemplate: Handling exception: java.lang.IllegalStateException, caused by: java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()
10:28:40.417 [main] DEBUG o.s.b.repeat.support.RepeatTemplate: Repeat is complete according to policy and result value.
10:28:40.418 [main] DEBUG o.s.b.repeat.support.RepeatTemplate: Handling fatal exception explicitly (rethrowing first of 1): java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()
10:28:40.418 [main] DEBUG o.s.b.core.step.tasklet.TaskletStep: Applying contribution: [StepContribution: read=0, written=0, filtered=0, readSkips=0, writeSkips=0, processSkips=0, exitStatus=EXECUTING]
10:28:40.418 [main] DEBUG o.s.b.core.step.tasklet.TaskletStep: Rollback for RuntimeException: java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()
10:28:40.421 [main] DEBUG o.s.t.support.TransactionTemplate: Initiating transaction rollback on application exception
java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()
How do we use JTA with the JpaPagingItemReader?