急死人了
<!-- 数据访问 -->
<bean id="test.sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="test.dataSource" />
<property name="configLocation" value="/WEB-INF/mybatis/mybatis-config.xml"></property>
</bean>
<bean id="test.sqlMapper" abstract="true" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="sqlSessionFactory" ref="test.sqlSessionFactory" />
</bean>
<!-- 事务管理 -->
<bean id="test.transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="test.dataSource"></property>
</bean>
<!-- 启用注解事务 -->
<tx:annotation-driven transaction-manager="test.transactionManager"/>
使用@Transactional注解接口中的一个方法,然后在实现的方法里手动抛出一个runtime异常,发现根本不回滚,急死了要
------解决方案--------------------
<bean id="test.transactionManager"> 中加:
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
------解决方案--------------------
我是说你的类有没写好注解啊之类的
------解决方案--------------------
我刚刚遇到过这样的清空,
用mysql建表默认不是innoDB,所以即使我程序里面是带事物的,也无效。
后来把数据表结构改成了支持事物的innoDB就好了
------解决方案--------------------
在applicationContent.xml中声明事务
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource"></ref>
</property>
</bean>
<!-- 声明式事务管理 -->
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
然后在需要事务的类前加上@Transactional
------解决方案--------------------
很简单 你要明白spring对事物管理是怎么回事 你首先要确定配置的正确性 然后对事物的控制