IBM 曾经有一个功能包,可以将 JPA 2.0 放入 WAS 7。WAS 8.5.5 显然带有 JPA 2.0。但是我们有一个刚刚升级到 Hibernate 4 的应用,它需要 JPA 2.1。我找不到将 WAS 8.5 功能包推送到 JPA 2.1 的链接。
有没有其他人在 WAS 8.5 中使用过 Hibernate 4?如果是这样,如何?如果没有功能包,我们会在 javax.persistence 类上得到 NoSuchMethodError。
最佳答案
hibernate 4.3.7.决赛 可用于 Websphere Application Server 8.5.5 具有以下配置:
hibernate-jpa-2.1.jar
在您的应用程序中并将类加载器策略设置为 PARENT_LAST。Hibernate 4.3.7.Final 与 Websphere 8.5.5 提供的 JPA 2.0 API 不兼容
没有这个你会得到关注
SAXParseException
在启动期间,Websphere 尝试根据 JPA 2.0 模式解析 persistence.xml。 引起:org.xml.sax.SAXParseException:预期的根元素 {http://java.sun.com/xml/ns/persistence}persistence
在 com.ibm.ws.jpa.management.JaxbUnmarshaller.startElement(JaxbUnmarshaller.java:310)
报告的问题是使用 Hibernate 的 JPA 2 API 而不是 Webspheres JPA 1 API,而解决方法也适用于 Hibernate 的 JPA 2.1 API,但有一些小改动:
您需要更换
HibernatePersistence
与 HibernatePersistenceProvider
因为前者已被弃用。没有这个你会得到关注
ClassCastException
在启动期间,因为 Hibernate 的 JPA 2.1 API 将加载所有 PersistenceProvider
类,包括在类路径中公开的 Websphere 类。 引起:java.lang.ClassCastException: com.ibm.websphere.persistence.PersistenceProviderImpl 与 javax.persistence.spi.PersistenceProvider 不兼容
在 javax.persistence.Persistence$1.isLoaded(Persistence.java:110)
在 org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:56)
关于hibernate - 带有 JPA 2.1 的 Websphere 8.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23745542/