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中文网其他相关文章!