Spring Transactions不能与@Transactional一起使用

时间:2015-08-19 09:44:19

标签: spring spring-transactions

我有以下代码......

@Transactional (rollbackFor = Exception.class)
public String log(AuditRecord aRecord) throws AuditException {

    auditMaster(aRecord); //1. has an audit id and inserts into Audit table

    System.out.println(aRecord.getAuditId()); 

    if(true)
        throw new AuditException(Error.DUMMY_ERROR);

    auditSingleValued(aRecord); //2.

    auditMultiValued(aRecord); //3
}

日志功能中的三个auditXXX()方法正在插入到不同的表中。因为我已经在log方法上声明了@Transactional,所以我期望由于if(true)块中的异常,应该回滚auditMaster()方法(在1.)上的插入。但是这种情况没有发生,当我检查我的数据库时,它有一个System.out.println正在打印的新的Audit Id条目。

可以做些什么来实现回滚并使其成为整个log()方法的原子事务?

我是否还需要在各个auditXXX方法上声明@Transacional? 我的bean配置有这个条目......

 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

0 个答案:

没有答案