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

これは、古いバージョンの JPA API が Hibernate で使用されている場合に発生します。Hibernate 4 は JPA api の 2.1 バージョンを使用するため、JPA 1.0 である NetWeaver によって提供されるクラスの代わりに、hibernate-jpa-2.1-api-1.0.0.Final.jar ファイル内のクラスが必要です。

javax.persistence.* クラスを探すときに Heavy Resources クラスローダーが最初に親クラスローダーに委譲しているため、アプリは JPA クラスの 1.0 バージョンを取得していると思います。私が望んでいたように、Hibernate.ear アプリケーションで定義された jar からそれらを取得します。

Heavy Resources クラスローダーが子ファーストタイプのクラスローダーになるように指定する方法はありますか? または、NetWeaver 7.3 で Hibernate 4.3 を使用する別の方法を見つけた人はいますか。私は NetWeaver にまったく慣れていないので、ガイダンスをいただければ幸いです。

ありがとう

4

1 に答える 1