javax.persistence.Table.indexes()[Ljavax/persistence/Index
質問:
Hibernate からアップグレードする場合Play Framework アプリケーションで 4.2.5.Final から 4.3.0.Final までの間、例外が発生します:
java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
回答:
この問題は、アプリケーションのクラスパス内の Java Persistence API (JPA) 仕様の依存関係の異なるバージョン間の競合。具体的には、Play Framework JPA プラグインには JPA 2.0 仕様への依存関係が含まれていますが、Hibernate 4.3.0.Final には新しい JPA 2.1 仕様が必要です。
この問題を解決するには、ビルドから JPA 2.0 仕様の依存関係を除外します。 .sbt ファイルを作成し、JPA 2.1 への次の依存関係に置き換えます。仕様:
"org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.0.Final"
Play 2.2.x の場合、build.sbt ファイルを次のように編集します。
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
JPA 2.0 の依存関係を除外し、JPA 2.1 の依存関係を含めることで、 JPA 仕様の正しいバージョンが使用されていること、NoSuchMethodError 例外が解決されていること。
以上がHibernate を 4.2.5.Final から 4.3.0.Final にアップグレードすると、「javax.persistence.Table.indexes()」で「NoSuchMethodError」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。