Spring @Transactional rollback不工作

Sam*_*war 2 spring transactions commit transactional rollback

我有一个如下代码

   public abstract class AffltTransactionService implements IAffltTransactionService {
    ....

        @Override
        @Transactional
        public void processTransactions(List<? extends AffltTransaction> transactions) {
            for (AffltTransaction transaction : transactions) {
                if (transaction != null) {
                    processTransaction(transaction);
                }
            }
        }

        private void processTransaction(AffltTransaction transaction) {
            try {
                processTransactionInternal(transaction);

            } catch (Exception exception) {
                affltTransactionError = new AffltTransactionError(null, null, "error", new Date());
                saveAffltTransactionError(affltTransactionError);
                log.error(exception.getLocalizedMessage());
            }
        }

        @Transactional(readOnly=false, rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
        public void processTransactionInternal(AffltTransaction transaction) {
Run Code Online (Sandbox Code Playgroud)

processTransactionInternal抛出ServiceUnAvailableException,它扩展了RuntimeException

但是,尽管有rollbackFor = Exception.class,事务仍未回滚.你能帮忙吗?

Vla*_*mir 6

@Transactional如果直接调用该方法,则注释将不会产生任何影响,因为Spring在注释类上方创建代理,而方面定义的功能由代理实现.因此,当您从类中调用该方法时,它不会通过代理,因此不会创建和/或回滚转换.

有关详细说明,请查看Spring参考.