2010-07-30 2 views
1

Если у меня есть транзакционные методы A, B, C и A, вызовы B, C; то C исключает исключение, которое не попадает внутрь A.короткий и простой вопрос о весенних вложенных транзакциях

Вопрос в том, будет ли B откатываться назад или нет?

Обратите внимание, что вложенные транзакции по умолчанию отключены, так что A, B, C являются транзакционными сами по себе.

Thanks

+0

Вопрос запутан, попробуйте быть более явным. Фактический пример кода поможет. – skaffman

ответ

2

Обратите внимание, что Spring по умолчанию только откатывает транзакции, когда исключение RuntimeException (или подкласс) выдается за границы транзакции (т. Е. Когда исключение не поймано вашим транзакционным методом).

Проверенное исключение НЕ приведет к тому, что Spring отметит транзакцию для отката, если вы не указали ее явно.

0

Да.

Если A, B и C - все методы @Transactional, а A вызовы B и C, Spring будет управлять транзакционным характером всех трех, используя одну транзакцию. Другими словами, вызов A, B и C фактически будет иметь одну транзакцию. Если C выдает исключение, единственная транзакция, используемая A, B и C, будет отброшена назад.

Смежные вопросы