我正在尝试使用 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条经验 获得超12个赞
在接口的官方 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
提交
取消