【发布时间】:2016-05-23 06:29:36
【问题描述】:
我们正在尝试在websphere 7 中部署战争,目前仅支持JPA 1.0,我们无法升级到JPA 2.0 并使用它。所以我们正在降级应用程序并部署。
目前使用spring-data-jpa以下,hibernate和spring版本如下
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.3.1.ga</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.0.2.RELEASE</version>
</dependency>
春季版:3.2.5.RELEASE
但我们仍然得到以下异常
Caused by: java.lang.NoSuchMethodError: javax/persistence/EntityManager.getMetamodel()Ljavax/persistence/metamodel/Metamodel;
at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:56)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145)
请指教,我们如何解决这个问题。
提前致谢
【问题讨论】:
-
你的服务器支持 JPA1 并不意味着你不能使用 JPA2。只需在你的战争中打包所有东西,禁用父类加载和部署。而不是试图与旧版本一起破解。
-
如果我们按原样部署而不在 persistence.xml 中降级到 jpa 1.0 版本并禁用父类优先加载,我们将得到 Caused by: org.xml.sax.SAXParseException: cvc-complex -type.3.1:元素'persistence'的属性'version'的值'2.0'对于相应的属性使用无效。属性“版本”的固定值为“1.0”。
-
那么你的战争中有 JPA 1,或者你的战争中没有包括所有必要的东西。此外,您不应使用 hibernate 和 spring-data-jpa 的版本,而应使用更新的版本。
-
所有内容都包含在内,它会抛出以下相关错误消息:java.lang.NoSuchMethodError: javax/persistence/spi/PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;在 org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:642)
-
那么您的版本不兼容...可能是 JPA 2.1 实现并包含 JPA 2.0 API(反之亦然)。
标签: spring jpa websphere spring-data-jpa websphere-7