javax.persistence.Table.indexes() 中的 NoSuchMethodError
在使用 Hibernate 的 Play Framework 应用程序中,升级到 Hibernate 4.3.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 会导致 javax.persistence.Table.indexes() 中出现 NoSuchMethodError?的详细内容。更多信息请关注PHP中文网其他相关文章!