SSH/JPA整合错误总结

来源:互联网 发布:后盾网php视频教程 编辑:程序博客网 时间:2024/06/05 09:19

错误1:

org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'entityManagerFactory' defined inclass path resource [applicationContext.xml]: Invocation of initmethod failed; nested exception isjava.lang.NoSuchMethodError:

。。。。。。。。。。。。。。。。。。。。。

Caused by: java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
 atorg.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:632)
 atorg.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory

解决错误trace主要是看causedby这个错误的原因是:Ljavax/persistence/ValidationMode的错误信息,无法解决,看了spring官网的社区才知道这是hibernate的bug,这是因为使用的是新版本的Hibernate(这里我使用的是 Hibernate3.6),跟javaee.jar里面的jpa接口冲突了。解决方法是:移除MyEclipse自带的javaEE包,自己新建userlibraries,加入javaEE中的jsf-api.jar jsf-impl.jar jstl-1.2.jar包,再加入tomcat中的servlet-api.jar,其实就是将javaEE中的javaee.jar用tomcat中的servlet-api.jar换掉,这样这个问题就解决了。

 

错误2:

org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'entityManagerFactory' defined inclass path resource [applicationContext.xml]: Invocation of initmethod failed; nested exception is java.lang.NoClassDefFoundError:org/hibernate/annotations/common/reflection/MetadataProvider

 

Caused by:java.lang.NoClassDefFoundError:org/hibernate/annotations/common/reflection/MetadataProvider
 atorg.hibernate.ejb.Ejb3Configuration.(Ejb3Configuration.java:150)
 atorg.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)

这个我看了一下org/hibernate/annotations/common/reflection,于是导入hibernate-annotations就好了,当然还有hibernate-commons-annotations