Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JBoss seam和JPA(Hibernate)上的Bean验证_Java_Validation_Jakarta Ee_Seam_Bean Validation - Fatal编程技术网

Java JBoss seam和JPA(Hibernate)上的Bean验证

Java JBoss seam和JPA(Hibernate)上的Bean验证,java,validation,jakarta-ee,seam,bean-validation,Java,Validation,Jakarta Ee,Seam,Bean Validation,我已经创建了一个自定义约束,只希望在预持久化时刻调用它。此外,我还创建了验证组,并根据规范将其设置在persistence.xml文件中。 似乎验证在正确的时间(预持久化)被调用,通过我的自定义约束实现等等,但是当验证完成时,我会得到下面的异常 Caused by: javax.validation.ConstraintViolationException: validation failed for classes [br.com.rcetecnologia.model.Orcamento]

我已经创建了一个自定义约束,只希望在预持久化时刻调用它。此外,我还创建了验证组,并根据规范将其设置在persistence.xml文件中。 似乎验证在正确的时间(预持久化)被调用,通过我的自定义约束实现等等,但是当验证完成时,我会得到下面的异常

Caused by: javax.validation.ConstraintViolationException: validation failed for classes [br.com.rcetecnologia.model.Orcamento] during persist time for groups [br.com.rcetecnologia.validator.annotations.ValidateOnPersistOnly, ]
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:155)
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:94)
at org.hibernate.action.EntityInsertAction.preInsert(EntityInsertAction.java:178)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:72)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:795)
at org.hibernate.search.jpa.impl.FullTextEntityManagerImpl.flush(FullTextEntityManagerImpl.java:157)
My persistence.xml文件:

<persistence-unit name="pu" transaction-type="RESOURCE_LOCAL">
    ...
    <validation-mode>CALLBACK</validation-mode>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.search.default.directory_provider" value="filesystem"/> 
        <property name="hibernate.search.default.indexBase" value="/Users/gyowannyqueiroz/temp/indexes"/>

        <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory"/>
        <property name="hibernate.cache.use_second_level_cache" value="true"/>
        <property name="hibernate.cache.use_query_cache" value="true"/>

        <property name="javax.persistence.validation.group.pre-persist" value="br.com.rcetecnologia.validator.annotations.ValidateOnPersistOnly" />
    </properties>
</persistence-unit>

...
回拨

您是否调试了验证器?约束冲突异常意味着您的验证器已被调用,但验证未通过。您好,我将对其进行调试,以查看是否能够赶上进度。我告诉您结果。好的,根据正在执行的调试器验证,但是我注意到Hibernate验证器正在抛出异常。为什么会发生这种情况,而不是让我的jsf页面显示验证消息?我是否应该捕获调用jpa的persist方法的containValidationException?UI页面上的显示将取决于您如何配置JSF来处理错误消息。现在,如果验证成功,但抛出错误消息,那么这就是一个问题。您确定验证确实成功了吗?是的,因为在调试器中,我可以看到我在验证消息捆绑文件中配置的验证消息。