Возможно, вам нужно изменить уровень изоляции.
Вот некоторая информация:
http://www.interview -questions-tips-forum.net / index.php / Your-Вопросы-на-Java / JDBC-транзакции / Transaction-изолирующие-Levels
В нем говорится о различных уровнях изоляции и о том, что они могут помочь защитить. Общий способ сделать это - начать со строгого, а затем понизить, если вам нужно лучшее время отклика, учитывая при этом требования целостности данных / ложного чтения.
редактировать
Spring Transaction уровни используются для абстрагирования уровней изоляции транзакций 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. Они используются, как правило, в файле пружинной разводки, чтобы определить сериализацию и распространение для конкретного вызова. Если у вас есть пример вашего подключения, я мог бы дать еще несколько советов / информации.