0

有没有人能够在 NetWeaver AS Java 7.3 上运行的应用程序中使用 Hibernate 4.3。我按照这里的示例:http : //scn.sap.com/docs/DOC-1349 通过创建一个包含以下 jar 文件的 Hibernate 应用程序库容器项目来使用 Heavy Resources 类加载器:

  • 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-apis-1.0.b2.jar

然后我部署 Hibernate.ear 并将其作为参考添加到我的应用程序 application-j2ee-engine.xml 文件中:

<reference reference-type="hard">
    <reference-target provider-name="sap.com" target-type="application">Hibernate</reference-target>
</reference>

我的应用程序可以找到休眠 jar 并使用它们,但我收到以下错误:

java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey

当 Hibernate 使用旧版本的 JPA api 时,就会发生这种情况。Hibernate 4 使用 2.1 版本的 JPA api,因此需要 hibernate-jpa-2.1-api-1.0.0.Final.jar 文件中的类,而不是 NetWeaver 提供的 JPA 1.0 类。

我相信该应用程序正在获取 JPA 类的 1.0 版本,因为 Heavy Resources 类加载器在查找 javax.persistence.* 类时首先委托其父类加载器,因此它在那里找到了 1.0 JPA api 类而没有得到它们来自 Hibernate.ear 应用程序中定义的 jar,就像我希望的那样。

有没有办法指定重资源类加载器成为子类加载器?或者有没有人找到另一种在 NetWeaver 7.3 中使用 Hibernate 4.3 的方法。我对 NetWeaver 一点也不熟悉,因此我们将不胜感激。

谢谢

4

1 回答 1

0

我是一名 SAP NetWeaver 顾问,我讨厌带来坏消息:由于 SAP NetWeaver 7.3 基于 Java EE 5,它目前只支持 JPA 1.0...

从 2011 年 ( http://scn.sap.com/thread/2028916 )开始,SCN 上有一个关于这个主题的生动话题,并且到今天仍在更新(所有评论都值得一读!)

如果我可以引用 Rolf Paulsen 于 2014 年 1 月 15 日在该主题中发表的一篇文章:

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

2009 年 12 月 14 日: “随着 Java EE6 的推出,现在是时候将它引入我们的开发了,但是没有可用的计划(标准发布一周后)告诉我们这个标准何时会成为产品。”
2012 年 4 月 4 日: “还计划在之后将 Neo 的功能引入本地环境。什么时候会发生,我无法回答。”
2014 年 1 月 14 日: “实施正在制定中,计划在今年上半年看到曙光。” “那是带有网络配置文件的插件。从那时起,我们将与云更新相协调。”

不会太快。SAP 将一些 Tomcat EE 6 从 SAP Cloud 插入到旧版 Java EE 5 NetWeaver Java 中?并且只有这个插件会与 SAP Cloud 相协调(与 Java EE 6 Web Profile 相得益彰)并支持 Java EE 6 功能?

听起来 Tobias 对“SAP AS Java EE 6/7 何时能看到曙光”这个问题的回答“从不”仍然是正确的。SAP NetWeaver AS Java 本身将永远保留在 Java EE 5 上。

于 2014-08-20T09:41:39.723 回答