可以在NetWeaver 7.3上使用Hibernate 4.3

时间:2014-08-19 20:50:31

标签: hibernate sap netweaver

是否有人能够在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
  • 冬眠-公地注解-4.0.5.Final.jar
  • 冬眠核-4.3.6.Final.jar
  • 冬眠-JPA-2.1-API-1.0.0.Final.jar
  • jandex-1.1.0.Final.jar
  • 了Javassist-3.18.1-GA.jar
  • 的JBoss-测井3.1.3.GA.jar
  • JBoss的测井的注解-1.2.0.Beta1.jar
  • 的JBoss-事务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 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版本,因为重型资源类加载器在查找javax.persistence。*类时首先委托给它的父类加载器,因此它在那里找到1.0 JPA api类而不是像我希望的那样从Hibernate.ear应用程序中定义的jar中获取它们。

有没有办法指定Heavy Resources类加载器成为子类型第一类加载器?或者有人在NetWeaver 7.3中找到了另一种使用Hibernate 4.3的方法。我根本不熟悉NetWeaver,所以任何指导都会受到赞赏。

由于

1 个答案:

答案 0 :(得分:0)

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

关于SCN这一主题的一个热门话题源自2011年(http://scn.sap.com/thread/2028916),并且至今仍在更新(非常值得阅读所有评论!)

如果我可以引用2014年1月15日Rolf Paulsen在该主题中的帖子:

  

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

     

2009年12月14日:   “随着Java EE6的推出,现在是时候了   将它介绍给我们的开发,但没有可用的计划(一个   标准发布后一周,这会告诉我们什么时候   标准将成为产品的一部分。“
   2012年4月4日:“它也是   计划将Neo的功能带入内部环境   然后。当这发生时,我无法回答。“    2014年1月14日:   “实施正在制定中,并计划看到   在今年上半年亮了。“”那是带网络的插件   轮廓。从那时起,我们将与云协调   更新。“

     

不太快。 SAP从SAP插入一些Tomcat EE 6   云入旧的Java EE 5 NetWeaver Java?而且只有这个插件   将与SAP Cloud协调一致(这对Java来说已经足够了   EE 6 Web Profile)并支持Java EE 6功能?

     

听起来像   Tobias回答“从不”这个问题“SAP AS Java 6/7什么时候开始   看到光“仍然正确.SAP NetWeaver AS Java本身将留下来   永远在Java EE 5上。