我正在嘗試使用 postgresql 數據庫上的 spring data jpa 從數據庫中刪除一條記錄,我需要捕獲 sql 錯誤代碼try { userRepository.deleteUser(id);} catch(org.springframework.dao.DataAccessException e) { // here}如何在 catch 塊中獲取 sql 錯誤代碼?getCause 或 getMessage 方法未檢索 sql 錯誤代碼爪哇postgresql冬眠jdbc彈簧數據-jpa
1 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
在接口的官方 JavaDocSQLExceptionTranslator
中,我們找到了這個提示:
返回的 DataAccessException 應該包含作為根本原因的原始異常。?
SQLException
但是,由于 DataAccessExceptions 也可能由其他資源 API 引起,因此客戶端代碼通常可能不依賴于此。也就是說,當期望發生基于 JDBC 的訪問時,getRootCause() instanceof SQLException
檢查(和后續轉換)被認為是可靠的。
因此,考慮到這些信息,您可以編寫如下代碼:
try {
? ? userRepository.deleteUser(id);
} catch(org.springframework.dao.DataAccessException e) {
? ? if( e.getRootCause() instanceof SQLException) {
? ? ? ? SQLException sqlEx = (SQLException) e.getRootCause();
? ? ? ? int sqlErrorCode = sqlEx.getErrorCode();
? ? ? ? // do further things from here on...
? ? }
}
希望這可以幫助。
添加回答
舉報
0/150
提交
取消