@Override
@Transactional(rollbackFor = { RuntimeException.class, Exception.class}, propagation = Propagation.REQUIRED)
public String upload(ObjectVO vo) throws CustomException {
.......
}
在此服务中,我插入到两个表中。如果在处理数据(例如强制性字段检查)时出现异常,而第二个表应该在第一个表之后插入,那么它是否应该在相同事务中回滚插入第一个表中的数据?在我的情况下,我没有得到它回滚。预期的行为是什么? (是的,我不捕捉异常,其包含在rollbackFor
第一个自定义异常,并且被抛出)
(I am using hibernate
) DAO层做getSession().save(entity);
(getSession()
返回currentSession)@transaction - 回滚失败
(所以第一张表中的数据仍然存在)
表格不相关。
<tx:annotation-driven/>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
lazy-init="true">
<property name="dataSource" ref="dataSource" />
</bean>
确定服务实例由Spring管理? – Mani
是的,我相信 –
我假设你的customException是checkedException。如果它是CustomException,如果你没有明确捕获它应该是方法签名的一部分(作为抛出) - 我错了任何地方? – Mani