能否在NetWeaver 7.3上使用Hibernate 4.3

能否在NetWeaver 7.3上使用Hibernate 4.3,hibernate,sap,netweaver,Hibernate,Sap,Netweaver,是否有人能够将Hibernate 4.3作为Java 7.3在NetWeaver上运行的应用程序中使用。我遵循了下面的示例:通过创建一个Hibernate应用程序库容器项目来使用重载资源类加载器,该项目包含以下jar文件: antlr-2.7.7.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.jar hibernate-core-4.3.6.Final.jar hibernate-jpa-2.1-api-1.0.0.

是否有人能够将Hibernate 4.3作为Java 7.3在NetWeaver上运行的应用程序中使用。我遵循了下面的示例:通过创建一个Hibernate应用程序库容器项目来使用重载资源类加载器,该项目包含以下jar文件:

  • antlr-2.7.7.jar
  • dom4j-1.6.1.jar
  • hibernate-commons-annotations-4.0.5.Final.jar
  • hibernate-core-4.3.6.Final.jar
  • hibernate-jpa-2.1-api-1.0.0.Final.jar
  • jandex-1.1.0.Final.jar
  • javassist-3.18.1-GA.jar
  • jboss-logging-3.1.3.GA.jar
  • jboss-logging-annotations-1.2.0.Beta1.jar
  • jboss-transaction-api_1.2_spec-1.0.0.Final.jar
  • xml-api-1.0.b2.jar
然后部署Hibernate.ear,并将其作为参考添加到我的apps application-j2ee-engine.xml文件中:

<reference reference-type="hard">
    <reference-target provider-name="sap.com" target-type="application">Hibernate</reference-target>
</reference>
当Hibernate使用较旧版本的JPAAPI时,就会发生这种情况。Hibernate 4使用JPA api的2.1版本,因此需要Hibernate-JPA-2.1-api-1.0.0.Final.jar文件中的类,而不是NetWeaver提供的JPA 1.0类

我相信该应用程序正在获得JPA类的1.0版本,因为重资源类加载器在寻找javax.persistence.*类时首先委托给其父类加载器,因此它在那里找到了1.0 JPA api类,而不是像我希望的那样从Hibernate.ear应用程序中定义的jar中获取它们会的

有没有办法指定重载资源类加载器成为子类型的第一类加载器?或者有人找到了在NetWeaver 7.3中使用Hibernate 4.3的其他方法吗。我对NetWeaver一点也不熟悉,因此希望您能提供指导


谢谢

我是一名SAP NetWeaver顾问,我不想带来坏消息:因为SAP NetWeaver 7.3基于Java EE 5,所以它目前只支持JPA 1.0

SCN上有一个关于这个主题的生动话题,起源于2011年(),至今仍在更新中(所有评论都值得一读!)

请允许我引用Rolf Paulsen在2014年1月15日关于该主题的一篇文章:

最后,是4年SAP声明的有趣总结:

2009年12月14日: “有了Java EE6,现在是时候 将其引入我们的开发,但没有可用的计划(一个 标准发布一周后)这将告诉我们 标准将成为产品的一部分。”
2012年4月4日:“它也是 计划将近地天体的特征引入内部环境 之后。当这种情况发生时,我无法回答。“
2014年1月14日: 他说:"有关的实施工作现正进行中,并计划在明年年底前完成 这是一个带有web的插件 从那时起,我们将与云相协调 更新。”

不要太快。SAP从SAP中插入一些Tomcat EE 6 将云技术引入传统的Java EE 5 NetWeaver Java?只有这个插件 将与SAP云相协调(这在Java中已经足够好了 EE 6 Web配置文件)并支持Java EE 6功能

听起来像 Tobias对“SAP何时将成为JavaEE6/7”这一问题的回答是“从不” “查看指示灯”保持正确。SAP NetWeaver作为Java本身将保留 永远在JavaEE5上


谢谢你。我希望通过配置重载资源类加载器来避免使用容器提供的javax.*类,从而不首先查看父类加载器(可以说是子类加载器)。因为我不依赖任何NW JPA服务,所以我想我可以将2.1 JPA jar打包到引用的Hibernate.ear文件中,但是因为HeavyResources类加载器在加载类时首先查看它的父类,所以它是从那里加载JPA 1.0 jar,而不是我提供的jar。我使用了Hibernate的3.3.2.GA版本,它使用JPA1.0。
java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey