【问题标题】:exception translation with jpa template spring使用 jpa 模板 spring 进行异常翻译
【发布时间】:2013-05-20 16:55:57
【问题描述】:

我在 Spring / JPA 中有我的应用程序。 Spring 将数据库异常转换为运行时异常,称为 DataAccessException。我的一列有唯一约束,我想显示用户定义的消息,表明该列的值已经存在。但是当我使用e.getMessage(); 检索消息时,它只会给我无法执行 JDBC 批量更新。这是不够的。 我能否以数据库供应商返回的方式获取任何特定于数据库的错误代码,以便我可以根据它进行一些映射。

spring 确实提供了 sql-error-code.xml,我们可以使用它进行翻译。但我使用的是 jpatemplate 而不是 jdbcTemplate。 请帮助我,因为我是春季异常处理的新手。

提前致谢。

【问题讨论】:

    标签: spring jpa exception-handling


    【解决方案1】:

    引用弹簧手册:

    Spring 提供了从 SQLException 等特定于技术的异常到其自己的异常类层次结构的便捷转换,其中 DataAccessException 作为根异常。这些异常包含原始异常,因此绝不会有丢失任何可能出错的信息的风险。

    您应该捕获 Spring DataIntegrityViolationException,然后设置对您的用户有意义的任何使用消息。

    这里有完整的例外列表http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/dao.html

    【讨论】:

    • 我尝试捕获 DataIntegrityViolationException。但我没有收到正确的信息。它只是给我类似“无法执行 JDBC 批量更新”的消息。我无法从这条消息中找出问题所在。你能在这方面帮忙吗?
    • 您是在尝试帮助用户还是通过打字自己找出问题所在。如果您想自己解决这个问题,请配置 hibernate 以打印出发送到 db 的 SQL 以查看受影响的列。存储在异常中的消息将取决于所使用的 jdbc 驱动程序的类型,其中一些会提供详细的消息,而另一些则更神秘。
    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多