@Transactional (rollbackfor = Exception.class) для двух классов daoimpl - PullRequest
1 голос
/ 04 декабря 2011

В моем проекте я использую два транзакционных класса. Каждый класс содержит метод сохранения. Когда я добавляю @Transactional(roolbackFor=Exception.class) аннотацию в эти классы, для использования как

@Component
public class CallerClass{
@Autowired    
private TransactionClass1 class1;
@Autowired    
private TransactionClass2 class2;

public void saveOperation(){    
    try{
        class1.save();
        class2.save();
    }catch(Exception ex){
    }
}
}

если метод class1.save выполняется без Exception, но метод class2.save генерирует Exception, то операция class1.save откатывается?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2011

Нет.

Чтобы иметь такое поведение, метод, содержащий эти два вызова, также должен быть транзакционным.Более того, если вы создаете экземпляры своих классов, используя new, транзакционный перехватчик не будет использоваться.Вы должны получить экземпляры этих классов из контекста приложения или (предпочтительно) путем внедрения зависимостей.

1 голос
/ 04 декабря 2011

Если у вас нет аннотаций @Transactional для метода, который содержит вызовы save (), тогда, если есть исключение, если class2.save (), class1.save () не следует откатывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...