数据库mysql,这样的代码和配置不知道怎么无法回滚,数据被正确更新掉了,请问这是哪里错了?
代码及调用:@Controller->@Service
@Transactional
public void test() {
jdbcTemplate.execute("update test set name='4444' where id=1");
throw new RuntimeException("1111");
}
配置:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
------解决方案--------------------
那你是不是陪了<context:component-scan> 却没有把test 所在路径配进去啊!
------解决方案--------------------
hibernate里面用注解?我很不习惯,配置就是配置,代码就是代码,代码配置混在一起,可读性很差
个人认为JDK1.6以后的annotation功能是完全错误的发展方向
------解决方案--------------------
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource" />
</bean>
把 你的 transactionManager 的配置 改为 下面 这样 就可以了 至于sessionFactory 你自己配一个
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
------解决方案--------------------
这样注解 @Transactional(rollbackFor=Exception.class)
然后在方法中把异常抛出,不要捕获异常。