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
正如你所看到的,不顯示最後一行(提交()沒有返回)。它不會拋出任何例外。但是,該對象已從數據庫中刪除。
在應用程序的其他位置沒有這樣的問題。
死鎖可能是根本原因死鎖。其他任何東西都在同一時間運行嗎? –
謝謝阿克塞爾,看起來確實存在一個死鎖。我想我解決了它。如果你可以把它作爲答案發布,我很樂意接受它。 – Anvar
你應該看看使用適當的事務隔離級別 –