Вопрос

Я использую аннотации для обозначения методов, которые должны выполняться в транзакции.

Но в одном месте мне нужно сделать transactionManager.rollback() вручную, без аннотаций.Как я могу получить transactionManager объект?

Это было полезно?

Решение

Если вы хотите отменить текущую транзакцию, вы можете использовать

    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

Обратите внимание, что он не откатывает транзакцию немедленно — он устанавливает статус «только откат», поэтому транзакция будет откатана во время попытки фиксации.


В противном случае, если вам нужно программное разграничение транзакций, вы можете использовать TransactionTemplate, как описано в 10.6 Программное управление транзакциями.

Также вы можете получить экземпляр PlatformTransactionManager, но он не получил широкого распространения, поскольку TransactionTemplate — рекомендуемый подход для программного разграничения транзакций.

Смотрите также:

Другие советы

Если ваш объект настроен на весну, вы можете выключить, чтобы ввести в него TransactionManager ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top