我想在我的應用程序中使用一個方法的聲明性事務,使得幾個數據庫調用。我這樣做,通過應用@Transactional註釋有問題的方法,該方法類似於這樣:春天 - 交易沒有被應用在方法周圍
@Transactional
public MyReturnType myTransactionalMethod(SomeType1 param) {
SomeType2 someIntermediateObject = dao1.doStuff(param);
MyReturnType retObj = dao2.doMoreStuff(someIntermediateObject);
return retObj;
}
我再建立Spring的事務中在我的XML配置:
<tx:annotation-driven transaction-manager="transactionManager" order="200"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
我當時就想以測試方法,以驗證該交易將回滾正確在方法的失敗,讓我修改我的方法看起來是這樣的:
public MyReturnType myTransactionalMethod(SomeType1 param) {
SomeType2 someIntermediateObject = dao1.doStuff(param);
MyReturnType retObj = dao2.doMoreStuff(someIntermediateObject);
throw new RuntimeException(); //The RuntimeException should trigger a rollback
}
當我EXECUT編輯這第二種方法,它沒有像我所期望的那樣進行回滾,而是將創建的條目留在了我的數據庫中。我也希望在堆棧跟蹤中看到Spring插件的某些符號插入了我的插入方法,它將處理事務性的東西,但我只在這個事務性方法之前看到調用方法,沒有任何Spring注入方法的跡象。
任何人都可以看到我做錯了什麼,會導致這種行爲在事務處理沒有得到應用?
顯示你在哪裏調用'myTransactionalMethod'。 – chrylis