2010-03-31 128 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