我正在使用 Spring“@Transactional”注释来处理事务。
@Transactional(readOnly = false,propagation=Propagation.REQUIRES_NEW,isolation=Isolation.READ_UNCOMMITTED,rollbackFor=SQLException.class)
public void updateBatch(Report a)
throws SQLException, DataAccessException { insert1();insert2(); insert3(); }
但万一
- insert1() - 成功插入表 A 中的数据。
- insert2() - 成功插入表 b 中的数据
- insert3() - 抛出检查异常并且不在表 C 中插入数据
这些插入是ibatis inbuild函数来触发DB中的插入我得到了以下异常
“引起:org.springframework.transaction.UnexpectedRollbackException:事务回滚,因为它已被标记为仅回滚 在 org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:717) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)"
并且事务不会回滚,即 insert1(),insert2() 不会回滚
请让我知道我错过了什么