2

Какова альтернатива транзакции откат весной, за исключением аннотации @Transactional. Я использовал эту аннотацию, но мне нужен способ, с помощью которого я могу откатить транзакцию в блоке catch. Там в любом случае?Альтернатива @Transactional аннотация

Thanx заранее.

+0

почему вам нужно откатить в водосборный блоке? – shlomi33

+0

У меня есть ситуация, когда мне нужно откат в блоке catch и нужно сделать некоторый процесс в блоке catch. –

+0

Вам нужно откат, а затем обработать или обработать, а затем откат? – shlomi33

ответ

2

Вот проект:

public class SomeService implements SomeInterface { 

    private SomeDao thisDaoWrapsJdbcTemplate; 
    private PlatformTransactionManager transactionManager; 

    public void setTransactionManager(PlatformTransactionManager transactionManager) { 
     this.transactionManager = transactionManager; 
    } 

    public void doBusiness(Business: business) { 

     TransactionDefinition def = new DefaultTransactionDefinition(); 
     TransactionStatus status = transactionManager.getTransaction(def); 

     try { 

     // do business here 
     Money money = Money.LOTS_OF 
     ... 
     // wire the money in.. 
     thisDaoWrapsJdbcTemplate.depositLotsOfMoney(money) 

     transactionManager.commit(status); 

     } catch (DataAccessException dae) { 

     transactionManager.rollback(status); 
     throw dae; 
     } 
     return; 
    } 
+0

Я использовал TransactionAspectSupport.currentTransactionStatus(). SetRollbackOnly() в блоке catch, который откатывает транзакцию, выполненную в блоке try. Но что делать, если я делаю транзакцию после этой строки в блоке catch? тоже будет откат? –

+0

В вышеприведенном черновике будет отменено только транзакционное состояние (текущее) ... если вы установилиRollbackOnly, javadoc «Это указывает менеджеру транзакций, что единственным возможным результатом транзакции может быть откат» – Xstian