我使用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