У меня следующая проблема:
У меня есть 2 класса (A и B).Класс A имеет метод (method1), помеченный @Transaction(noRollBackFor = ExceptionB.class)
, который вызывает метод2 из класса B. ExceptionB - это непроверенная RunTimeException.
public class A {
...
@Resource
private B b;
@Transaction(noRollBackFor = ExceptionB.class)
public void method1() {
try {
b.method2();
} catch (ExceptionB e) {
// Change objects annotated with @Entity (must be persisted)
throw e;
}
}
}
@Transaction
public class B {
...
public void method2() {
...
throw new ExceptionB();
}
}
Однако, когда класс B выдает исключение,Spring Interceptor получает исключение и использует правила аннотаций транзакции класса B (которые не имеют правила noRollBackFor) и выполняет откат транзакции.Таким образом, все изменения, сделанные в method1, не сохраняются.Что я должен изменить, чтобы откат не произошел?
Заранее спасибо.