如何检查违反了哪些约束?

时间:2015-06-15 09:31:36

标签: java sql postgresql exception

我过去常常检查用户是否尝试存储有效数据并隐藏ConsratinViolationException,如下所示:

try {
    //persisitng to a db
} 
catch (ConstraintViolationException e){
    //Print message
}

我正在使用PostgreSQL,现在我认为persisitng可以违反多个不同的constarints。我怎样才能在catch子句中解释究竟是什么限制违反了?

我需要这样做,因为程序将打印的消息取决于那个。

2 个答案:

答案 0 :(得分:3)

如下所示

catch (ConstraintViolationException conEx) {
            if (conEx.getConstraintName().contains("xyz_fK")) {
                //TODO Project Entity is violating it's constrain
            } 
            LOGGER.Info( "My log message", conEx.getConstraintName());
            LOGGER.ERROR( "My log message", conEx);

答案 1 :(得分:2)

ConstraintViolationException包含Set ConstraintViolation个。每个都包含有关单个违规的信息。您可以使用Set检索此getConstraintViolations(),然后对其进行迭代,以了解详细信息。

请参阅http://docs.oracle.com/javaee/7/api/javax/validation/ConstraintViolationException.html