Это зависание может быть вызвано взаимоблокировкой между транзакциями.
Такие взаимные блокировки часто вызваны неправильным использованием нескольких транзакций в одном потоке (если транзакции A и B создаются одним потоком, транзакция Aожидает транзакции B, чтобы снять блокировку, но поток управления никогда не достигает точки, где B должен быть зафиксирован).
Итак, убедитесь, что управление транзакциями Spring сконфигурировано правильно и что вы не смешиваете управляемые Spring транзакции с управляемыми вручную.
Другая возможная причина - длительная транзакция, созданнаявнешняя система.Если к рассматриваемой базе данных подключено несколько внешних систем (например, инструменты администрирования), убедитесь, что транзакции, созданные этими системами, зафиксированы.