首頁  >  文章  >  Java  >  在 Play Framework 應用程式中升級 Hibernate 後,如何解決 javax.persistence.Table.indexes() 中的 NoSuchMethodError?

在 Play Framework 應用程式中升級 Hibernate 後,如何解決 javax.persistence.Table.indexes() 中的 NoSuchMethodError?

Susan Sarandon
Susan Sarandon原創
2024-11-24 06:05:14291瀏覽

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

javax.persistence.Table.indexes()[Ljavax/persistence/Index

在Play Framework 應用程式中,從Hibernate 升級時出現NoSuchMethodError 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 檔案並從play-java-jpa 排除hibernate-jpa-2.0-api 依賴項人工製品。更新後的依賴配置應如下所示:

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 檔案配置是為 Play 設計的2.2.x。對於早期版本的 Play,建置檔案配置可能存在差異。有關在不同版本的 Play 中配置依賴項的更多信息,請參閱 Play 文件。

以上是在 Play Framework 應用程式中升級 Hibernate 後,如何解決 javax.persistence.Table.indexes() 中的 NoSuchMethodError?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn