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