JavaEEで「SELECTFORUPDATENOWAIT」を使用しようとしています(JPAを使用)。これが私のやり方です:
props.put("javax.persistence.lock.timeout", 0);
em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_READ, props);
これは1つのことを除いてうまくいきます:これが失敗した場合(ロックを取得できなかった場合)、LockTimeoutException(他の正のタイムアウトが設定されている場合にスローされます)の代わりにPessimisticLockExceptionがスローされ、トランザクション(JTAトランザクション)が発生しますロールバックのマークが付けられます。
代わりにネイティブクエリを使用してみましたが、同じ結果が得られます。
EclipseLinkでWeblogic12.1を使用しています(TopLinkも試してみましたが、違いはありません)。
実行が失敗したときにJTAトランザクションがJavaEEでロールバックのマークを付けられずに、「SELECT FORUPDATENOWAIT」を実行する方法はありますか?