我有一個託管的無狀態會話bean,它帶有注入的EntityManager em。會話bean中的EntityManager異常處理
我想要做的是有一個獨特的列的數據庫表。然後我運行一些試圖插入實體的算法。如果實體存在,但它會更新它或跳過它。
我想有這樣的事情:
try {
em.persist(cd);
em.flush();
} catch (PersistenceException e) {
// Check if the exception is DatabaseException and ConstraintViolation
// Update instead or skip it
}
問題是,我可以只PersistenceException
趕上。 DatabaseException
沒有抓住。這很可悲,因爲只有DatabaseException
有方法叫做getDatabaseErrorCode()
我想用來檢查重複條目。我不明白,因爲PersistenceException.getCause()
返回DatabaseException
。
所以我的問題是:如何捕獲DatabaseException
並檢查MySQL錯誤代碼?
感謝您對此有任何想法和經驗。
當你說你的DatabaseException也不會鉤住你的意思是你沒有看到它在嵌套的PersistenceException?像這樣:引起:DatabaseException? – nwallman
我看到它嵌套在PersistenceException中。但是代碼catch(DatabaseException e)不起作用。如果DatabaseException嵌套在PersistenceException中,我該如何調用方法getDatabaseErrorCode()?也許它的基本Java問題。 – Macejkou