【发布时间】:2014-04-27 15:17:24
【问题描述】:
您好,我怀疑如何在合并期间捕获 ConstraintViolationException。我有我的 JPALogic 类,我想捕获异常以写下更多信息,这段代码完美运行,抛出 GenericSaveException:
try {
em.persist(o);
} catch (ConstraintViolationException e) {
System.out.println("*** CONSTRAINT VIOLATIONS");
Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
for (ConstraintViolation<?> violation : violations) {
System.err.println("*** VIOLATION: " + violation.getRootBeanClass().getSimpleName() + "::" + violation.getPropertyPath().toString() + " " + violation.getMessage());
}
throw new GenericSaveException();
}
但这不会抛出异常,导致 javax.ejb.EJBException:事务中止,原因:javax.transaction.RollbackException:标记为回滚的事务,原因:javax.validation.ConstraintViolationException:
try {
managed = (T) em.merge(o);
} catch (ConstraintViolationException e) {
System.out.println("*** JPALogic::merge --> CONSTRAINT VIOLATIONS");
Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
for (ConstraintViolation<?> violation : violations) {
System.err.println("*** VIOLATION: " + violation.getRootBeanClass().getSimpleName() + "::" + violation.getPropertyPath().toString() + " " + violation.getMessage());
}
throw new GenericSaveException();
}
为什么合并不抛出 ConstraintViolationException?我该怎么做才能捕获异常?
谢谢。
【问题讨论】:
标签: java exception jpa merge persistence