java - 如何在 org.springframework.dao.DataIntegrityViolationException 中获取约束名称?

标签 java hibernate spring

在我的应用程序中,当出现违规键时,我想获取约束名称,但我找不到任何方法来获取此信息。 “getMessage()”返回的消息非常概括,我需要有关错误的更多信息,以便为最终用户制作可自定义的错误消息。

堆栈跟踪:

84732 [http-8080-1] WARN  org.hibernate.util.JDBCExceptionReporter  - SQL Error: 0, SQLState: 23505
84732 [http-8080-1] ERROR org.hibernate.util.JDBCExceptionReporter  - ERROR: duplicate key value violates unique constraint "ix_tb_oferta_vaga"
  Detalhe: Key (cd_pj, cd_curso)=(680, 29) already exists.
187405 [http-8080-1] WARN  org.hibernate.util.JDBCExceptionReporter  - SQL Error: 0, SQLState: 23505
187405 [http-8080-1] ERROR org.hibernate.util.JDBCExceptionReporter  - ERROR: duplicate key value violates unique constraint "ix_tb_oferta_vaga"
  Detalhe: Key (cd_pj, cd_curso)=(680, 29) already exists.

getMessage():

could not insert: [br.gov.ce.seduc.estagio.model.bean.OfertaVaga]; nested exception is org.hibernate.exception.ConstraintViolationException: could not insert: [br.gov.ce.seduc.estagio.model.bean.OfertaVaga]

谢谢。

亚瑟

最佳答案

像这样插入一个catch语句:

catch (DataIntegrityViolationException e) {
        String message = e.getMostSpecificCause().getMessage();
}

关于java - 如何在 org.springframework.dao.DataIntegrityViolationException 中获取约束名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111134/

相关文章:

java - 尝试冒泡排序时出现空指针异常

java - 静态导入的工作原理

java - 如何从一个类调用另一个类的构造函数?

java - 以日期为数据类型将字符串转换为 "yyy-MM-dd"格式

java - Hibernate 创建不需要的映射表

java - 使用JUnit测试DAO类时,无法在DB2 10.5中获得下一个序列值

java - 具有 DTO 和 EO 的 DRY 原则,用于启用 spring 和 hibernate 的 webapp

java - 在 JUnit 3 中,测试共享 Spring 容器吗?

java - SocialAuth 中的 org.springframework.beans.factory.BeanCreationException (Spring)

java - 代码不断向后向数组中输入值