为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过 DataAccessException 检索 postgres 数据库上的 SQL

如何通过 DataAccessException 检索 postgres 数据库上的 SQL

SMILET 2023-04-26 16:18:31
我正在尝试使用 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...

    }

}

希望这可以帮助。


查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信