Я использую JBoss 6 с Seam, и у меня есть сущность, которую я пытаюсь сохранить, User
. Я расширил org.jboss.seam.framework.EntityHome
для предоставления класса UserHome
и переопределил метод persist()
. Я полностью аннотировал свой класс сущностей аннотациями javax.validation. Когда я предоставляю действительные значения для всех полей в моем классе сущности, объект сохраняется без проблем. Когда я нарушаю одно из ограничений проверки, постоянство завершается неудачно, как и ожидалось.
У меня проблема с нарушениями ограничений во время асинхронного сохранения: hibernate не сообщает мне, какое ограничение было нарушено!
javax.validation.ConstraintViolationException: validation failed for classes [com.example.model.User] duringpersist time for groups [javax.validation.groups.Default, ]
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:132)
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71)
Если я принудительно установлю синхронное постоянство, добавив EntityManager.flush()
к UserHome.persist()
, я смогу перехватить операторы ConstraintViolationException
и вывести журнал, содержащий нарушенные ограничения.
Мой вопрос: можно ли зарегистрировать слушателя в hibernate / jboss для нарушений ограничения? Я думаю, что немного нехорошо, что hibernate не печатает нарушения, но, надеюсь, я могу вставить некоторый код, который будет перехватывать и регистрировать их для получения дополнительной информации. В противном случае я понятия не имею, какое ограничение было нарушено.
Спасибо!