NoSuchMethodError in javax.persistence.Table.indexes()[Ljavax/persistence/Index
Play Framework アプリケーションでの Hibernate からのアップグレード4.2.5.Final から 4.3.0.Final へ移行すると、次のような問題が発生する可能性があります。 javax.persistence.Table.indexes().
に関する「NoSuchMethodError」例外 原因:
この問題は、play-java-jpa アーティファクト間の依存関係の競合に起因します。そして Hibernate-entitymanager アーティファクト。 play-java-jpa アーティファクトは、hibernate-entitymanager アーティファクト (バージョン 2.1) とは異なるバージョンの永続性 API (バージョン 2.0) に依存します。両方のアーティファクトがクラスパスに存在する場合、新しい API 定義が優先され、メソッド javax.persistence.Table.indexes() が未定義になります。
解決策:
この問題を解決するには、build.sbt ファイルを編集して、hibernate-jpa-2.0-api を除外します。 play-java-jpa アーティファクトからの依存関係。更新された依存関係構成は次のようになります。
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
この構成により、クラスパスには新しいバージョン (2.1) の API 定義のみが含まれるようになり、メソッド定義の競合が回避されます。
Play 2.2.x の場合:
上記で提供される build.sbt ファイル構成は、以下のために設計されています。 2.2.x をプレイします。 Play の以前のバージョンでは、ビルド ファイルの構成が異なる場合があります。 Play のさまざまなバージョンでの依存関係の構成の詳細については、Play のドキュメントを参照してください。
以上がPlay Framework アプリケーションで Hibernate をアップグレードした後に javax.persistence.Table.indexes() で NoSuchMethodError を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。