日期:2014-05-18  浏览次数:20766 次

急死人了,spring3.2.4+mybatis3.2.2事务管理无效?
急死人了

<!-- 数据访问 -->
<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>
------解决方案--------------------
引用:
Quote: 引用:

事务类的代码贴一下

public int DeleteRole(int roleId)
{
int result = sqlMapper.deleteRole(roleId);
if(result>0)
{
sqlMapper.deleteRoleAction(roleId);
sqlMapper.deleteUserRole(roleId);
}
throw new RuntimeException("测试回滚");
//return result;
}

我是说你的类有没写好注解啊之类的
------解决方案--------------------
我刚刚遇到过这样的清空,
用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="baseTransactio