JavaEEBeanマネージドトランザクションを使用するレガシーシステムの状況があります。LockAcquisitionException
作成したばかりのものを取得しようとすると、スローされます。
私の最初の考えはこれでした:
@TransactionAttribute(SUPPORTS)
public Item retrieveItem(int id) {
Item i;
try {
i = em.find(Item.class, id);
} catch (PersistenceException e) {
if (e.getCause() instanceof LockAcquisitionException) {
i = retrieveItem(id);
}
}
return i;
}
ただし、再帰呼び出しが行われたとき、トランザクションはすでに終了しており、新しいトランザクションは作成されていないようです。私は別の方法を試しましTransactionAttributes
たが、違いはないようです。また、自分でトランザクションを管理しようとしましたem.getTransaction()
が()、CMTでは違法です。
私はエレガントな修正を探していません-私が言ったように、これはレガシーです、私は数ヶ月ですべてが交換されるまでそれをトリアージする何かが必要です!
乾杯。