我正在使用彈簧&以Hiberate作爲供應商的JPA。Spring項目的DAO層中的異常處理JPA
在DAO層我試圖堅持實體。如果存在重複,則會拋出Hibernate的ConstraintViolationException異常。我已經在DAO中編寫了try-catch來捕獲異常,但是它根本不會去捕獲塊並將異常拋出到服務層。 JPA是否允許在DAO層中捕獲JDBCException,或者它會直接將其扔到上層?
我的代碼看起來像如下:
public void saveEntity(SomeEntity entity) throws CustomException {
try {
... do something...
entityManager.persist(entity);
}catch(Exception e) {
throw new CustomException(e.getMessage());
}
}
這裏如果事情發生之前堅持它捕獲,但如果出了問題,而堅持和的JDBCException來臨都沒有。
我知道我可以避免這種情況,首先檢查是否存在記錄,如果不存在,只有這樣我才能保存。但是我想知道爲什麼JDBCException(或任何與數據庫相關的異常)異常沒有被抓到。
任何幫助表示讚賞。