2010-03-31 129 views
5

我使用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不打印違規,但希望我可以插入一些代碼,將捕獲並記錄他們的更多信息。否則,我不知道違反了什麼限制。

謝謝!

+0

請給你的迴應如下答案 – developer 2011-05-10 08:17:58

回答

0

請檢查這些鏈接,你會得到良好的信息:

validator-checkconstraints

additionalmodules

+0

感謝您的鏈接,但是這並沒有解決我的問題。 – purecharger 2011-05-11 18:09:29

+0

我想如果你閱讀Damodar 1st鏈接,你會在例6.1中找到你需要的。嘗試擴展javax.validation.groups.Default並將您的類放入xml中。我有一個類似的問題,我刪除了驗證註釋,並根據需要運行。 – 2011-12-16 17:05:11