首頁  >  文章  >  Java  >  為什麼將 Hibernate 從 4.2.5.Final 升級到 4.3.0.Final 會導致「javax.persistence.Table.indexes()」中出現「NoSuchMethodError」?

為什麼將 Hibernate 從 4.2.5.Final 升級到 4.3.0.Final 會導致「javax.persistence.Table.indexes()」中出現「NoSuchMethodError」?

Barbara Streisand
Barbara Streisand原創
2024-11-24 01:54:12984瀏覽

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"

For玩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中文網其他相關文章!

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