java - 从 java.sql.SQLIntegrityConstraintViolationException 中提取约束名称

标签 java sql database oracle jakarta-ee

应用程序抛出 java.sql.SQLIntegrityConstraintViolationException,其约束名称如下

    Exception in thread "main" javax.ejb.EJBException: EJB Exception: ; nested exception is: 
    javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (**CONSTRAINT.UNIQUE_WT**) violated

问题:是否有 API/直接方法从异常对象 (java.sql.SQLIntegrityConstraintViolationException) 获取约束名称 CONSTRAINT.UNIQUE_WT

想法是,如果我可以获得约束名称,我就可以提供正确的错误消息。

最佳答案

没有方法可以实现此目的,但您可以使用提供的消息来完成此操作。

String constraint = null;
try {
  ...
} catch(SQLIntegrityConstraintViolationException e) {
  constraint = e.getMessage.split("**")[1];
}

关于java - 从 java.sql.SQLIntegrityConstraintViolationException 中提取约束名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17300398/

相关文章:

javascript - 搜索在多个 javascript 文件中使用一个 mongodb 连接的最佳实践

Android Studio - 如何使用库(来自 eclipse 项目)

java - 连接 Amazon MySQL 数据库时未找到合适的驱动程序

java - 如何在 Android/Eclipse 中为 pro 和 lite 创建 2 个具有相同名称的 jar

sql - 如何使用 PHP 和 sqlsrv 驱动程序清理输入?

sql - MySQL MyISAM 表性能问题重温

java - 如何确保数据库事务只发生一次?

database - Google Cloud Datastore REST API v1 (gqlQuery)

java - 使用递归方法返回链表中具有最大值的对象

sql - NHibernate Linq 中前 5 个元素的总和