Hibernate 4.3可以在NetWeaver 7.3上使用吗

qyzbxkaa  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(90)

有没有人能够在NetWeaver AS Java 7.3上运行的应用程序中使用Hibernate 4.3。我按照示例here使用Heavy Resources类加载器,创建了一个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-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>

我的应用程序可以找到hibernate 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中获取它们。
有没有办法指定Heavy Resources类装入器成为子优先类型类装入器?或者有人找到了在NetWeaver 7.3中使用Hibernate 4.3的另一种方法吗?
我对NetWeaver不太熟悉,因此任何指导都将受到赞赏。
谢谢

vcirk6k6

vcirk6k61#

我是SAP NetWeaver顾问,我不想带来坏消息:由于SAP NetWeaver 7.3是基于Java EE 5,它目前只支持JPA 1.0...
在SCN上有一个关于这个主题的生动主题,源于2011年(http://scn.sap.com/thread/2028916),直到今天仍然在更新(值得阅读所有的评论!)
如果我可以引用Rolf Paulsen在2014年1月15日关于这个主题的一篇文章:
最后,有趣的总结4年的SAP声明:

2009年12月14日:“随着Java EE 6的可用性,现在是时候将其引入我们的开发中了,但没有可用的计划(标准发布一周后)可以告诉我们何时该标准将成为产品的一部分。
2012年4月4日:“之后还计划将Neo的功能引入内部环境。这件事什么时候发生,我无法回答。”
2014年1月14日:“实施正在开发中,并计划在今年上半年看到光。”“这是与网页配置文件的插件。从那时起,我们将把它与云更新协调起来。

别太快SAP将一些Tomcat EE 6从SAP云中插入到遗留的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上。

相关问题