2010-11-24 2 views
2

У меня возникла странная проблема с моими транзакциями, не совершающими весной. После профилирования базы данных, похоже, что весна совершает транзакцию до ее начала?Весенние транзакции, не совершающие

Вот что я вижу в профилировщика ..

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> 

Я весной новичок и вроде потерял на Что происходит здесь. Спасибо за помощь и помощь!

+2

Что именно заставляет вас думать, что транзакция не была совершена? Вы подтвердили, что на сервере базы данных действительно есть открытая транзакция? – 2010-11-24 21:00:14

+0

Кажется, что на самом деле катится назад. Я знаю, что я в транзакции, потому что, когда я отлаживаю и вхожу в метод, который должен быть в транзакции, я не могу выбрать из базы данных. Когда метод завершится, я затем выберу, но данные не вставлены в db. Если я скопирую точную команду exec, что профиль регистрирует «exec vbosv_DLLVersion_Update 77, N'15», NULL, N'12.2.2.1 ', N'12.2.3.4' ", он успешно обновит базу данных. По какой-то причине мое приложение не может передать эти обновления в db. – Tbonebrad 2010-11-24 21:04:23

ответ

2

У вас есть @Rollback(false) по методу junit?

Смежные вопросы