我过去常常检查用户是否尝试存储有效数据并隐藏ConsratinViolationException
,如下所示:
try {
//persisitng to a db
}
catch (ConstraintViolationException e){
//Print message
}
我正在使用PostgreSQL
,现在我认为persisitng可以违反多个不同的constarints。我怎样才能在catch子句中解释究竟是什么限制违反了?
我需要这样做,因为程序将打印的消息取决于那个。
答案 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。