如何修复JBoss Hibernate 3.6.8.Final启动异常(org.Hibernate.validator.ClassValidator<;init>;)

如何修复JBoss Hibernate 3.6.8.Final启动异常(org.Hibernate.validator.ClassValidator<;init>;),hibernate,jboss,Hibernate,Jboss,我使用Hibernate 3.6.8.Final作为JBoss 4.3中部署的项目的一部分,并在启动过程中发现以下堆栈跟踪: Caused by: org.hibernate.AnnotationException: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate

我使用Hibernate 3.6.8.Final作为JBoss 4.3中部署的项目的一部分,并在启动过程中发现以下堆栈跟踪:

Caused by: org.hibernate.AnnotationException: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
        at org.hibernate.cfg.Configuration.applyHibernateValidatorLegacyConstraintsOnDDL(Configuration.java:1681) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.cfg.Configuration.applyConstraintsToDDL(Configuration.java:1653) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1445) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1519) ~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193) ~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1100) ~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:689) ~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
        at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) ~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
原因:org.hibernate.AnnotationException:java.lang.NoSuchMethodException:org.hibernate.validator.ClassValidator.(java.lang.Class、java.util.ResourceBundle、org.hibernate.validator.MessageInterpolator、java.util.Map、org.hibernate.annotations.common.reflection.ReflectionManager)
在org.hibernate.cfg.Configuration.applyhibernatevalidatoregacyconstraintsonddl(Configuration.java:1681)~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.cfg.Configuration.applyConstraintsToDDL(Configuration.java:1653)~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1445)~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1519)~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1100)~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:689)~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
在org.hibernate.ejb.HibernatePersistence.createContainerEntityManager工厂(HibernatePersistence.java:73)~[hibernate-entitymanager-3.6.8.Final.jar:3.6.8.Final]
我的项目是一个独立的WAR,不依赖JBoss进行持久性


我能做些什么来修复它呢?

结果证明,它所需要的只是一点冬眠魔法灰尘。persistence.xml需要具有以下Hibernate属性:

<property name="hibernate.validator.autoregister_listeners" value="false" />
<property name="hibernate.validator.apply_to_ddl" value="false" />

希望这对别人有帮助

如果有人能解释一下我的原因,我将不胜感激。

有关同一问题的更详细回答,请参阅