ホームページ > Java > &#&チュートリアル > Play Framework アプリケーションで Hibernate をアップグレードした後に javax.persistence.Table.indexes() で NoSuchMethodError を解決する方法

Play Framework アプリケーションで Hibernate をアップグレードした後に javax.persistence.Table.indexes() で NoSuchMethodError を解決する方法

Susan Sarandon
リリース: 2024-11-24 06:05:14
オリジナル
308 人が閲覧しました

How to Resolve a NoSuchMethodError in javax.persistence.Table.indexes() After Upgrading Hibernate in a Play Framework Application?

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

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