我使用JBam 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不打印違規,但希望我可以插入一些代碼,將捕獲並記錄他們的更多信息。否則,我不知道違反了什麼限制。
謝謝!
請給你的迴應如下答案 – developer 2011-05-10 08:17:58