おそらく、分離レベルを変更する必要があります。ここで
は、いくつかの情報です: http://www.interview-questions-tips-forum.net/index.php/Your-Questions-on-Java/JDBC-Transaction/Transaction-Isolation-Levels
それは別の分離レベルの話、そして、彼らはに対してガードを助けることができるもの。これを行う一般的な方法は、strictistで始めることですが、データの整合性/偽の読み取りの要件を念頭に置いて、レスポンスタイムを改善する必要がある場合は低くします。
編集
春のトランザクションレベルは、トランザクションマネージャで抽象JDBC(または何でも)トランザクション分離レベルに使用されています。それらはTransactionDefinitionクラスで定義され、静的メンバーです。
TransactionDefinition.ISOLATION_DEFAULT
Default isolation
TransactionDefinition.ISOLATION_READ_UNCOMMITTED
Lowest level of isolation; allows transactions to see uncommitted modifications from other transactions
TransactionDefinition.ISOLATION_READ_COMITTED
Cannot read uncommitted data
TransactionDefinition.ISOLATION_REPEATABLE_READ
Ensures repeatable reads
TransactionDefinition.ISOLATION_SERIALIZABLE
Most reliable; all transactions are executed atomically, and are treated as though they occurred serially.
トランザクションの伝播レベルもあります。あなたはトランザクションが不要な純粋な読み取りのトランザクションを使用している可能性があります。読み取りはトランザクションを必要とせず、書き込みは常にそれらの周りのトランザクションを持つ必要があります。伝播レベルはTransactionDefinitionでも明確です。これらは通常、バネ配線ファイルで使用され、特定の呼び出しのシリアル化と伝播を定義します。あなたの配線の例があるなら、私はいくつかのヒント/情報を与えることができるかもしれません。
私は自分のトランザクションの境界が不明です。私はトランザクションを必要とするDAOメソッドに@transactionalを持っていますが、DAOを使用するコードへのエントリポイントには@transactionalもあります。前者を削除すると、トランザクションエラーは発生しません。それは私が現在調査中のものです。 @stackoverflow.com/questions/807457/ –
をチェックしてください。@Transactionalが非常に遠すぎました。一度削除すると、データベースをロックせずに正常に動作しています。私はまだいくつかの奇妙な問題を抱えています@トランザクション、しかし、私はそれを解決するだけで、より小さいトランザクションに依存しています。この質問は、http://stackoverflow.com/questions/1079114でも参考になりました。 –