如果在任何

时间:2016-09-06 20:14:28

标签: spring hibernate

我在同一个班级中一个接一个地在三个不同的表上执行三次crud操作。如果其中任何一个发生异常。怎么能回滚在spring + hibernate之前执行的其他crud。

1 个答案:

答案 0 :(得分:0)

在方法上使用@Transactional注释并指定事务管理器。

来自Spring文档: http://docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>

在您的代码中:

 @Transactional
 public void updateThreeTables() {
    // Update
    // Update
    // This error will rollback all three
 }
相关问题