<!-- 事务处理管理器 --> 
<bean id="transactionManager" 
class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
<property name="sessionFactory" ref="MySessionFactory" /> 
</bean> <!--  事务拦截器 --> 
<bean id="transactionInterceptor" 
class="org.springframework.transaction.interceptor.TransactionInterceptor"> 
<property name="transactionManager" ref="transactionManager" /> 
<property name="transactionAttributes"> 
<!-- 事务传播属性--> 
<props> 
<prop key="get*,find*,search*"> 
PROPAGATION_REQUIRED,readOnly 
</prop> 
<prop key="*">PROPAGATION_REQUIRED</prop> 
</props> 
</property> 
</bean> <!-- 定义BeanNameAutoProxyCreator--> 
<bean 
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> 
<!-- 指定对满足哪些bean name的bean自动生成业务代理 --> 
<property name="beanNames"> 
<!-- 下面是所有需要自动创建事务代理的bean --> 
<list> <!-- 部门管理 --> 
<value>DeptImpl</value> </list> 
</property> <!-- BeanNameAutoProxyCreator所需的事务拦截器 --> 
<property name="interceptorNames"> 
<list> 
<value>transactionInterceptor</value> 
</list> 
</property> 
</bean>

解决方案 »

  1.   

    Spring的事务没有指定rollback-for的功能,在配置了事务拦截器的业务层方法中如果有数据库操作失败自动回滚整个方法中的库表操作
      

  2.   

    有吧,你看这一个:<!-- 另一个事务管理器 -->
    <bean id="TM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="MySessionFactory"/>
    </property>
    </bean>
    <tx:advice id="txAdvice" transaction-manager="TM">
    <tx:attributes>
    <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
    <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
    <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/>
    <tx:method name="find*"  read-only="true" rollback-for="Exception"></tx:method>
    </tx:attributes>
    </tx:advice>
    <aop:config>
    <aop:pointcut id="allManagerMethod" expression="execution(* com.rock.business.*..logic..*(..))"/>
    <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
    </aop:config>
    <!-- 另一个事务管理器 -->
      

  3.   

    rollback-for的Exception这里的异常必须是  运行时异常 或者 错误才能进行回滚...其他的不回滚