首页  >  文章  >  Java  >  为什么将 Hibernate 从 4.2.5.Final 升级到 4.3.0.Final 会导致'javax.persistence.Table.indexes()”中出现'NoSuchMethodError”?

为什么将 Hibernate 从 4.2.5.Final 升级到 4.3.0.Final 会导致'javax.persistence.Table.indexes()”中出现'NoSuchMethodError”?

Barbara Streisand
Barbara Streisand原创
2024-11-24 01:54:12986浏览

Why Does Upgrading Hibernate from 4.2.5.Final to 4.3.0.Final Cause a `NoSuchMethodError` in `javax.persistence.Table.indexes()`?

javax.persistence.Table.indexes()[Ljavax/persistence/Index

问题:

从 Hibernate 升级时Play Framework 应用程序中的 4.2.5.Final 到 4.3.0.Final 出现异常:

java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;

答案:

问题的出现是由于应用程序类路径中不同版本的 Java Persistence API (JPA) 规范依赖项之间的冲突。具体来说,Play Framework JPA 插件包含对 JPA 2.0 规范的依赖项,而 Hibernate 4.3.0.Final 需要较新的 JPA 2.1 规范。

要解决此问题,请从构建中排除 JPA 2.0 规范依赖项.sbt 文件并将其替换为 JPA 2.1 规范的以下依赖项:

"org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.0.Final"

For玩 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"
)

通过排除 JPA 2.0 依赖项并包含 JPA 2.1 依赖项,您可以确保使用正确版本的 JPA 规范,从而解决NoSuchMethodError 异常。

以上是为什么将 Hibernate 从 4.2.5.Final 升级到 4.3.0.Final 会导致'javax.persistence.Table.indexes()”中出现'NoSuchMethodError”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn