Транзакция откатывается при выполнении одного из двух условий:
- В вашем коде есть исключение
- Истекло время ожидания
Очевидно, что вы можете поймать исключение в случае № 1, обернув крайний код try{}catch()
.Но какой ваш код выполняется по таймауту?
Если ваш сервер приложений не предлагает API для подключения слушателя к таким событиям, это невозможно.См. Документацию, которую вы получили с продуктом, или обратитесь в службу поддержки для получения подробной информации.
[РЕДАКТИРОВАТЬ] Если вы хотите увидеть SQL, который фактически вызывает таймаут, у вас есть два варианта:
Вы можете использовать java.sql.DriverManager.setLogWriter(w);
для записи всех операторов SQL в файл.Хотя это всегда работает, это создаст много выходных данных, и будет трудно сопоставить это с исключением, если только вы не можете быть уверены, что только вы выполняете запросы.
Если выиспользуйте OR mapper (например, Hibernate и т. д.), вы можете включить ведение журнала для них.См. здесь для Hibernate .