【问题标题】:Given a 'java.sql.SQLIntegrityConstraintViolationException' is it possible to determine column('s) in error给定“java.sql.SQLIntegrityConstraintViolationException”是否可以确定列错误
【发布时间】:2014-03-24 04:17:37
【问题描述】:

鉴于我有一个“java.sql.SQLIntegrityConstraintViolationException”类型的异常

是否可以以编程方式确定错误的列(或列)?我问这个是因为我想将错误映射回客户端的数据模型以指示错误的字段(例如违反唯一键)。

例如,如果尝试在表中插入重复值,则会引发“java.sql.SQLIntegrityConstraintViolationException”异常并显示以下消息:

语句被中止,因为它会导致重复键 标识的唯一或主键约束或唯一索引中的值 由在“COLUMN_NAME”上定义的“INDEX_NAME”。

拥有错误类型和错误字段将允许客户端很好地指示哪个输入错误以及错误消息。 我想我可以尝试传递错误消息,以获取我需要的信息(显然这不是一个好的解决方案。)

有人知道从异常中提取错误列的好方法吗?

【问题讨论】:

    标签: java sql jpa unique-constraint


    【解决方案1】:

    其中相当一部分将是特定于供应商的。你可以从sql error code 学到很多东西。但正如 javadoc 指出的那样,该值是特定于供应商的。 Spring 有一个utility,它能够将这些代码(支持许多供应商)转换为更具体的异常层次结构。在违反约束的情况下,您可能会收到 DataIntegrityViolationException,但这仍然不会提供对被违反的索引名称的显式访问。但是,该消息可能会包含索引名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多