hibernate - 带有 JPA 2.1 的 Websphere 8.5

标签 hibernate jpa websphere

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 不兼容
  • 设置 JVM 属性 com.ibm.websphere.persistence.ApplicationsExcludedFromJpaProcessing=*禁用 Websphere JPA 初始化。

    没有这个你会得到关注 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)
  • 申请 work around for issue JPA-4在您的应用程序中。

    报告的问题是使用 Hibernate 的 JPA 2 API 而不是 Webspheres JPA 1 API,而解决方法也适用于 Hibernate 的 JPA 2.1 API,但有一些小改动:

    您需要更换 HibernatePersistenceHibernatePersistenceProvider因为前者已被弃用。

    没有这个你会得到关注 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/

    相关文章:

    java - 如何通过 jpa 注释确定嵌套对象列表的运行时获取类型(Eager/Lazy),

    java - Hibernate,保存id而不在对象中引用

    jpa - 是否可以通过并测试 JPA 中的空列表?

    java - JAAS——J2C认证数据

    java - 部署子主题是否可以包含管理员的部署说明

    java - Hibernate:单个表中的多个@ManyToMany 关系

    hibernate - 从Grails中的Hibernate Event监听器获取调用操作和操作的参数

    java - 在 IBM WebSphere 上运行的意外异常 java.math.BigDecimal

    java - Spring/JPA 中的实体更新选项

    java - springMvc 和 hibernate 持久化