TongWeb8.0 上应用采用JPA报 javax.validation.Validation相关异常,日志中有com.tongweb.bval.jsr相关信息,如何解决?
4条回答 默认 最新
萝卜白菜。 2025-11-03 09:12关注这个的原因是在使用hibernate JPA时,通常默认开启了validation, 在TongWeb8.0下默认的validation实现类是 com.tongweb.bval.jsr.TWValidationProvider, 而hibernate一般采用org.hibernate.validator.HibernateValidator.
解决办法:
办法一:升级到TongWeb8.0.9.07版本。
办法二:在应用中进行配置。<!-- 在hibernate.cfg.xml中加上,javax.persistence.validation.mode默认情况下是auto的,若应用实际上不用hibernate.validator 可将其关闭 -- > <property name="javax.persistence.validation.mode">none</property><!-- 在spring中指明validation的实现 --> <bean id="my_validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <property name="validationMessageSource" ref="messageSource"/> </bean>办法三: 若是TongWeb8.0.9.06及之前版本,且不知应用中如何关闭validation。可以设置参数
-Dtongejb.bean-validation.provider=org.hibernate.validator.HibernateValidator
#该参数默认为:com.tongweb.bval.jsr.TWValidationProvider
日志中控制台会有如下异常,不影响使用2025-11-03 09:04:45.587 [INFO] [main] - Deploying app: version8.0.9.06/sysapp/console 2025-11-03 09:04:45.841 [WARN] [main] - Unable to load provider class org.hibernate.validator.HibernateValidator java.lang.ClassNotFoundException: org.hibernate.validator.HibernateValidator at com.tongweb.server.loader.WebappClassLoaderBase.loadClass0(WebappClassLoaderBase.java:1244) at com.tongweb.server.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1076) at com.tongweb.ee.server.TongWebWebappClassLoader.loadClass(TongWebWebappClassLoader.java:243) at com.tongweb.server.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1037) at com.tongweb.tongejb.assembler.classic.ValidatorBuilder.getConfig(ValidatorBuilder.java:110) at com.tongweb.tongejb.assembler.classic.ValidatorBuilder.buildFactory(ValidatorBuilder.java:78) at com.tongweb.tongejb.assembler.classic.ValidatorBuilder.buildFactory(ValidatorBuilder.java:36) at com.tongweb.tongejb.assembler.classic.LazyValidatorFactory.ensureDelegate(LazyValidatorFactory.java:38) at com.tongweb.tongejb.assembler.classic.LazyValidatorFactory.getFactory(LazyValidatorFactory.java:49) at com.tongweb.tongejb.assembler.classic.Assembler.createApplication(Assembler.java:1132) at com.tongweb.tongejb.assembler.classic.Assembler.createApplication(Assembler.java:855)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录