2011-04-22 158 views
0

我正在從webservice將大量數據加載到數據庫中。我正在使用eclipslink進行持久化並在glassfish 3.0上運行應用程序。我碰到了我的測試數據集中的問題,因爲有幾個外鍵約束違規。我對違規行爲很好,如果數據不完整,我不希望這些數據。然而,我的問題是在容器中拋出異常。然後,這標誌着我的回滾事務,並且我根本沒有收到任何數據。你可以創建自己的JTA交易嗎?

我想繼續使用JTA,但不知道我是否可以做我想做的事情,那就是創建我自己的JTA事務,以便我可以控制它提交的時間等。我不確定這是否是一個好主意,儘管我覺得這樣做可能會破壞使用JTA的一些好處。

那麼是否有可能獲得JTA交易?

+0

你從你的嘗試持續存在異常嗎?你可以在它進入容器並回滾事務之前捕獲它嗎? – nsfyn55 2011-04-22 17:12:34

+0

像UserTransaction? – fvu 2011-04-22 17:18:26

回答

2

數據庫是否在會話bean的方法中工作。用下面的方法標註該方法:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 

它將被賦予它自己的事務。外部交易將在其完成時暫停。

0

http://wiki.eclipse.org/Using_Advanced_Unit_of_Work_API_%28ELUG%29#Integrating_the_Unit_of_Work_with_an_External_Transaction_Servicestrong文字**

瞭解如何掌握工作的單位與外部事務服務。顯然你可以搶奪UserTransaction和/或通過查詢容器JNDI的UserTransaction來開始你自己

+0

謝謝,我喜歡@TransactionAttribute,因爲它非常簡單,但工作單元看起來像我可能會更有創意。 – grantk 2011-04-22 17:22:40

+0

@grantk肯定,但它假定您使用的是一個EJB @TransactionAttribute,它是 – nsfyn55 2011-04-22 17:30:48

相關問題