Spring事务没有提交

时间:2010-11-24 20:54:11

标签: java sql-server spring transactions

我的交易没有在春天提交,我遇到了一个奇怪的问题。在对数据库进行概要分析之后,看起来spring在启动之前提交了该事务吗?

以下是我看到的分析器..

SQL:BatchStarting   select 1  
SQL:BatchCompleted  select 1  
SQL:BatchStarting   IF @@TRANCOUNT > 0 COMMIT TRAN  
SQL:BatchCompleted  IF @@TRANCOUNT > 0 COMMIT TRAN      
RPC:Completed   exec vbosv_DLLVersion_Update 77,N'15',NULL,N'12.2.2.1',N'12.2.3.4'

在这种情况下没有提交事务,但如果我在此之后运行一段代码再次调用数据库,它将提交上一个事务。我认为它正在提交,因为它以IF @@TRANCOUNT > 0 COMMIT TRAN开头。

我使用了声明式事务管理,这里有一些我的配置

<!-- Transactional Advice -->
<tx:advice id="txAdvice" transaction-manager="txManager">
   <tx:attributes>
    <tx:method name="process*" rollback-for="Throwable"/>
    <tx:method name="write*" rollback-for="Throwable"/>
    <tx:method name="upload*" rollback-for="Throwable"/>
    <tx:method name="store*" rollback-for="Throwable"/>
   </tx:attributes>
</tx:advice>
<aop:config>
   <aop:pointcut id="dataServicesOperation" expression="execution(* com.enterprise.dataservices.DataServicesImpl.*(..))"/>
   <aop:advisor advice-ref="txAdvice" pointcut-ref="dataServicesOperation"/>
</aop:config>

我是一个春天的新手,有点迷失在这里发生的事情。非常感谢和帮助!

1 个答案:

答案 0 :(得分:2)

你有关于junit测试方法的@Rollback(false)吗?