У меня проблемы с обработкой ConstraintViolationException
и RollbackException
в среде JPA2 / Hibernate / Guice. Оба исключения происходят во время проверки бина, но:
ConstraintViolationException
выбрасывается, когда я пытаюсь сохранить новую сущность
RollbackException
происходит, когда я пытаюсь объединить сущность в контекст
Это происходит, когда обработка формы (создание и обновление сущностей) и отлов этих исключений утомительны:
try {
// service.method is annotated with @Transactional
entity = service.create(formEntity);
} catch (RollbackException re) {
// occurs while merging the entity
if (re.getCause() instanceof ConstraintViolationException) {
errors.process((ConstraintViolationException) re.getCause());
}
} catch (ConstraintViolationException cve) {
// occurs while persisting the entity
errors.process(cve);
}
Я не хотел бы добавлять еще один поток управления и перехватывать все RuntimeException
s:
try {
// bean validation fails (merge / persist)
} catch (RuntimeException ex) {
if (errors.process(ex)) {
// do something with entity
}
}
Можно ли как-то заставить Hibernate не включать CVE в RE? Какой самый прозрачный и СУХОЙ способ обработки и обработки таких исключений?
Спасибо