我正在使用Jersey和jOOQ实现REST API。
我有一些带有一些约束的表,例如一个唯一的键。当插入违反此约束的元组时,jOOQ会抛出DataAccessException
:
org.jooq.exception.DataAccessException: SQL [insert into ...]; ERROR: duplicate key value violates unique constraint "issue_name_key"
有没有办法找出违反了哪个约束,没有字符串解析错误消息?如果违反了约束,我想返回400 bad request
http状态代码而不是500 general error
。
如果不可能,这里的常见做法是什么?我是否应该查询数据库中每个可能的约束违规?这闻起来像是一个维护陷阱。
答案 0 :(得分:3)
根据Lukas Eder的评论:在jOOQ中不可能,因为它只依赖于JDBC异常。
答案 1 :(得分:0)
我不确定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 ");
}
}