2017-08-11 17 views
2

我在Spring服務中存在持久性問題。 Rest-Controller R接收請求,並通過一些複雜的代碼層調用服務S. S中的服務方法聲明一個事務;這應該是第一次開始交易。 但是服務的行爲就像之前已經啓動的事務,我的一些數據對象將成爲會話的一部分(他們不能)。 如何確定交易是否已處於活動狀態?我試圖注入EntityManager和/或JpaTransactionManager;但都似乎沒有幫助。如何確定我是否處於Spring的事務中?

如何檢查我是否在交易中?

我想在我搜尋所有這些層尋找可能的嫌疑犯之前確定這一點。

回答

3

您可以使用TransactionSynchronizationManager.isActualTransactionActive()檢查交易是否有效。但是你應該在服務方法執行之前調用它。

您也可以使用

TransactionStatus status = TransactionAspectSupport.currentTransactionStatus(); 

除了獲得當前事務的狀態,也許是一個很好的點,你是讓交易的記錄。

log4j.logger.org.hibernate.transaction=DEBUG,R 
log4j.logger.org.springframework.transaction=DEBUG,R 
相關問題