jOOQ:DataAccessException和约束条件

问题描述 投票:5回答:2

我正在使用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

如果这不可能,那么这里的惯例是什么?我应该在数据库中查询每种可能的约束违例吗?这闻起来像维护陷阱。

java http unique-constraint jooq http-status-code-400
2个回答
3
投票

根据Lukas Eder的评论:jOOQ中不可能,因为它仅依赖JDBC异常。


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 ");
    }
    }
© www.soinside.com 2019 - 2024. All rights reserved.