3

GAE で JDO を使用して、以下のような単純なデータベース トランザクション コード ブロックを使用しています。

スローされた java.sql.SQLException: Concurrent Modification から再試行/回復する良い方法は何ですか?

プライベート最終プロバイダー pmp; ...

PersistenceManager pm = pmp.get(); { pm.currentTransaction().begin(); を試してください。

MyObject myObject= pm.getObjectById(MyObject.class, id);

pm.currentTransaction().commit();

} 最後に {

if (pm.currentTransaction().isActive()) { log.severe( this.getClass().getName() + "データベース例外をキャッチしました。"); pm.currentTransaction().rollback(); } }

4

1 に答える 1

0

その例外は実際にどこにスローされますか? commit() と isActive() のセマンティクスは確かですか? commit() は、新しいトランザクションを自動的に作成し、トランザクションを常にアクティブのままにすることができます。

私の他の推測では、これは同時にアクセスされるシングルトン Bean であり、それらはすべて、要求されたオブジェクトを同時に変更する他のクエリと同じトランザクションになります。

于 2010-02-02T22:53:47.747 に答える