java - 部署到 websphere 时在 hibernate 5 上使用 JPA 2.0

标签 java spring hibernate jpa websphere

当我尝试在 Websphere Application Server 9.0 上部署应用程序时,出现此错误

An error occurred in the org.hibernate.jpa.HibernatePersistenceProvider persistence provider when it attempted to create the container entity manager factory for the ApplicationEntityManager persistence unit. The following error occurred: java.lang.ClassCastException: org.hibernate.jpa.HibernatePersistenceProvider incompatible with javax.persistence.spi.PersistenceProvider

有人建议我将 JPA 降级到 2.0。是否可以将 JPA 2.0 与 Hibernate 5.2.1 一起使用?或者有其他解决方案可以解决我的问题。

最佳答案

如果使用传统的 WebSphere Application Server, 以下是设置服务器提供的 JPA 规范级别的说明, https://www.ibm.com/support/knowledgecenter/en/SSEQTP_9.0.0/com.ibm.websphere.base.doc/ae/tejb_idmod_jpaspec.html

也就是说,Hibernate 5.2.1 似乎依赖于 JPA 2.1,而不是 2.0。请参阅此处指示的依赖项, https://mvnrepository.com/artifact/org.hibernate/hibernate-core/5.2.1.Final

该问题可能是由于在应用程序中包含 JPA 规范 JAR 的副本导致的,这样服务器和应用程序就会尝试加载同一类的不同副本,从而发生冲突并产生此错误。检查您的应用程序并从中删除 JPA 规范 JAR 的所有副本(包括 Hibernate 提供的任何副本),以便始终仅使用服务器副本来加载 JPA。

关于java - 部署到 websphere 时在 hibernate 5 上使用 JPA 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48698756/

相关文章:

java - 如果相关实体存在,则防止删除实体

java - 如何从 XSD 生成 JAXB 类?

java - 没有@Transactional的Hibernate sessionFactory.getCurrentSession()

java - 从 XML 迁移到注释 (spring)

java - SpringBoot BeanCreationException : Error creating bean with name 'requestMappingHandlerAdapter' Caused by: java. lang.NoSuchFieldError: defaultInstance

java - 服务器遇到内部错误,无法满足此请求

java - 如何让 Neo4j 遍历更快?

java - java.time 中的 joda.ISODateTimeFormat 是否等效?

java - JAVA中如何去除字符串中的转义字符

java - 对带有一对多连接 native 查询的第一个表使用 setMaxResults