2012-11-08 40 views
0

我在使用JPA(與EclipseLink 4.2.1)時遇到了一個奇怪的問題。EclipseLink JPA Transaction.commit()不返回

代碼的相關部分:

l.debug("creating EM"); 
em = factory.createEntityManager(); 
int id = Integer.parseInt(idString); 
l.debug("parsed"); 
em.getTransaction().begin(); 
SomeClass g = em.find(SomeClass.class, id); 
l.debug("found"); 
em.remove(g); 
l.debug("removed"); 
em.getTransaction().commit(); 
l.debug("Returning..."); 

輸出是:

DEBUG - creating EM 
DEBUG - parsed 
DEBUG - found 
DEBUG - removed 

正如你所看到的,不顯示最後一行(提交()沒有返回)。它不會拋出任何例外。但是,該對象已從數據庫中刪除。

在應用程序的其他位置沒有這樣的問題。

+0

死鎖可能是根本原因死鎖。其他任何東西都在同一時間運行嗎? –

+0

謝謝阿克塞爾,看起來確實存在一個死鎖。我想我解決了它。如果你可以把它作爲答案發布,我很樂意接受它。 – Anvar

+0

你應該看看使用適當的事務隔離級別 –

回答

1

通常掛交易的根本原因可能是與其他concurent交易