jOOQ:DataAccessException 和约束
jOOQ: DataAccessException and constraints
我正在使用 Jersey 和 jOOQ 实现 REST API。
我有一个 table 有一些约束,例如唯一键。当插入一个违反此约束的元组时,jOOQ 会抛出一个 DataAccessException
:
org.jooq.exception.DataAccessException: SQL [insert into ...]; ERROR: duplicate key value violates unique constraint "issue_name_key"
有没有办法在不对错误消息进行字符串解析的情况下找出违反了哪个约束?如果违反约束,我想 return 400 bad request
http 状态代码而不是 500 general error
.
如果这不可能,这里的常见做法是什么?我应该为每个可能的约束违规查询数据库吗?这闻起来像维护陷阱。
根据 Lukas Eder 的评论:在 jOOQ 中不可能,因为它只依赖于 JDBC 异常。
我不确定jOOQ DataAccessException是否支持'contains'方法。但是对于"org.springframework.dao.DataAccessException",我们可以通过以下方式实现。
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DuplicateKeyException;
catch(DataAccessException sqlExcep) {
if(sqlExcep.contains(DuplicateKeyException.class)) {
System.out.println("Duplicate key exception found. Return 400 bad request ");
}
else {
System.out.println("Some other exception. Return 500 bad request ");
}
}
我正在使用 Jersey 和 jOOQ 实现 REST API。
我有一个 table 有一些约束,例如唯一键。当插入一个违反此约束的元组时,jOOQ 会抛出一个 DataAccessException
:
org.jooq.exception.DataAccessException: SQL [insert into ...]; ERROR: duplicate key value violates unique constraint "issue_name_key"
有没有办法在不对错误消息进行字符串解析的情况下找出违反了哪个约束?如果违反约束,我想 return 400 bad request
http 状态代码而不是 500 general error
.
如果这不可能,这里的常见做法是什么?我应该为每个可能的约束违规查询数据库吗?这闻起来像维护陷阱。
根据 Lukas Eder 的评论:在 jOOQ 中不可能,因为它只依赖于 JDBC 异常。
我不确定jOOQ DataAccessException是否支持'contains'方法。但是对于"org.springframework.dao.DataAccessException",我们可以通过以下方式实现。
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DuplicateKeyException;
catch(DataAccessException sqlExcep) {
if(sqlExcep.contains(DuplicateKeyException.class)) {
System.out.println("Duplicate key exception found. Return 400 bad request ");
}
else {
System.out.println("Some other exception. Return 500 bad request ");
}
}