savePoint 保存点一般情况下,事务的完整性要求,要不全部提交,要不全部回滚,不能部分。
所以产生了保存点这个概念和对应的功能。你可以回滚到已经保存的某个保存点。

解决方案 »

  1.   

    我的意思是uploadPayVoucherBill是一个完整的事务,而uploadPayVoucherBillBySmallTrans是没有事务的,这是我想达到的目的,对于uploadPayVoucherBillBySmallTrans而言,它是完整的。
      

  2.   

    个人理解:
    uploadPayVoucherBillBySmallTrans中调用uploadPayVoucherBill,已经catch异常了,所以应该不会rollback
    或者
    <prop key = "uploadPayVoucherBillBySmallTrans">PROPAGATION_NOT_SUPPORTED </prop> 
    <prop key = "uploadPayVoucherBill">PROPAGATION_REQUIRED </prop> <prop key="*">PROPAGATION_REQUIRED,-Exception </prop>
    spring配置中不匹配uploadPayVoucherBillBySmallTrans,应该也不会rollback
      

  3.   

    <prop key = "uploadPayVoucherBillBySmallTrans">PROPAGATION_NOT_SUPPORTED </prop> 
    <prop key = "uploadPayVoucherBill">PROPAGATION_REQUIRED </prop> 
    <prop key="*">PROPAGATION_REQUIRED,-Exception </prop> 
    删除第一条和第三条试试
      

  4.   

    受一楼启发,把事务配置成了嵌套事务
    <prop key = "uploadPayVoucherBill"> PROPAGATION_NESTED,-Exception</prop>
    同时把nestedTransactionAllowed也配置为了true
    <bean id="hibernateTransManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="mysessionFactory" />
    </property>
    <property name="nestedTransactionAllowed" value="true" />  </bean>不知道为啥还是事务不回滚,大家用过 PROPAGATION_NESTED这种事务的给个意见,谢谢。
      

  5.   

    <prop key="*">PROPAGATION_REQUIRED,-Exception </prop> 
    所有的方法都加事务,性能太差了吧,我建议你这么配<prop key="do*">PROPAGATION_REQUIRED,-Exception </prop> 
    所有以do开头的方法有事务,其他的无事务,另外我支持fosjos
    lz在处理事务的时候还是要综合考虑比较好,否则事务都乱套了,我觉得你的需求很常见,一般大家都是像我说的那样配置的,所有方法都带事务这个可不好,以后问题会越来越多.
      

  6.   

    问题解决了,因为在我配置的是同一个事务中的两个方法的,这样不会起另一个事务,查看了spring的源代码。