NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax/persistence/Index;在 Hibernate 中
在 Hibernate 4.3.0.Final 中使用 Play Framework 应用程序时,用户可能会在 javax.persistence.Table.indexes() 中遇到 NoSuchMethodError 异常。此问题特定于 Hibernate 4.3.0.Final,在 4.2.5.Final 等早期版本中不会出现。
根本原因
发生错误的原因应用程序类路径中不同版本的 Hibernate 规范之间的冲突。 play-java-jpa 工件依赖于 Hibernate 2.0 API (hibernate-jpa-2.0-api),而 Hibernate 4.3.0.Final 引入了 Hibernate 2.1 API。因此,两个 API 版本在类路径中共存,导致 NoSuchMethodError 异常。
解决方案
要解决此问题,请从build.sbt 文件,同时包含 Hibernate 4.3.0.Final。以下是 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 Framework 应用程序使用 Hibernate 4.3.0.Final 抛出 NoSuchMethodError:javax.persistence.Table.indexes()?的详细内容。更多信息请关注PHP中文网其他相关文章!