2009-10-16 70 views
1

我有一種情況,我有一個EntitiesSession Bean的樹。 Session Bean只是堅持或合併實體,並且所討論的方法被標記爲@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)EJB3/DB2事務沒有回滾

現在,在由於(例如)外鍵衝突或缺少非空字段而導致子實體未能持久/合併的情況下,事務將在要回滾的日誌中標記,並且EJBException拋出。我期待整個事務被回滾,但是在EJB會話bean調用返回後,儘管子實體失敗,但我發現父數據庫出現在數據庫中。

是否有其他人看到過這樣的行爲?其他信息:

Server: Glassfish 
Persistence manager: Toplink 
Connection Pool: DB2 Universal Driver XA compliant driver. 

感謝。

+0

你可以顯示引發異常的代碼嗎? – 2009-10-17 17:23:27

回答

2

看起來Glassfish中的連接池已設置爲啓用標誌「Non Transactional Connections」。這導致失敗回滾。