Были различные сообщения о регистрации активности (запуск, принятие и откат) менеджера транзакций Spring.Однако недавно я столкнулся с тупиковой проблемой, для которой недостаточно просто регистрировать действия.
Фундаментальная проблема в нашем коде - это грязное использование транзакций распространения REQUIRED и REQUIRES_NEW.Существует так много вызовов методов туда и обратно, что мы заканчиваем множеством транзакций, накладываемых друг на друга.Увы, база кода огромна, и решение срочно ... (Мы все знаем, что это такое.)
Проблема была в тупике, потому что код был добавлен в объекты запроса в транзакции, которая была последовательно измененав другой транзакции.Spring выдает исключение, сообщающее об обновлении сущности X, потому что оно заблокировано.Зная, что это хорошо, но как найти неисправный код: запрос, который выполняет раннюю блокировку.
Мой вопрос (наконец-то): есть ли способ зарегистрировать сущности, добавляемые в транзакцию?Таким образом, я могу специально искать транзакции, блокирующие сущность, на которую жалуется Spring.
Спасибо!: -)