javax.persistence.Table.indexes() 中的NoSuchMethodError
在使用Hibernate 的Play Framework 應用程式中升級到Hiber .0.Final可能會導致NoSuchMethodError 異常javax.persistence.Table.indexes()。以下是發生這種情況的原因以及解決方法:
原因:
由於加載到類路徑中的不同版本的JPA 規範之間存在衝突而出現此問題。 Play 依賴特定版本的 JPA 規範,而 Hibernate 4.3.0.Final 則需要更新的版本。當兩個版本都存在時,會發生衝突,導致錯誤。
解決方案:
要解決此錯誤,您需要從Play 中排除較舊的JPA 規範類路徑,同時添加Hibernate 4.3.0.Final 所需的新版本。
For 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" )
對於早期版本的Play,請參閱您的特定文件
透過排除舊的JPA 規範,您可以確保只有Hibernate 所需的較新版本使用4.3.0.Final,解決衝突和NoSuchMethodError異常。
以上是為什麼升級到 Hibernate 4.3.0.Final 會導致 NoSuchMethodError 在 javax.persistence.Table.indexes() 中出現?的詳細內容。更多資訊請關注PHP中文網其他相關文章!