Hibernate を 4.2.5.Final から 4.3.0.Final にアップグレードすると、「javax.persistence.Table.indexes()」で「NoSuchMethodError」が発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-24 01:54:12
オリジナル
959 人が閲覧しました

Why Does Upgrading Hibernate from 4.2.5.Final to 4.3.0.Final Cause a `NoSuchMethodError` in `javax.persistence.Table.indexes()`?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート