当前位置: 首页 > 面试题库 >

javax.persistence.Table.indexes()中的NoSuchMethodError [Ljavax / persistence / Index

阴永福
2023-03-14
问题内容

我有一个Play Framework应用程序,并且正在使用Hibernate 4.2.5.Final(可通过Maven依赖管理器检索)。我决定升级到Hibernate 4.3.0.Final,成功重新编译我的应用程序,然后运行它。

我在下面有一个例外,但无法弄清楚原因。我降级到4.2.5,并且没有发生此问题。然后,我尝试在4.2.5之后的每个最终版本中升级Hibernate。也就是说,我从4.2.5.Final到4.2.6.Final,再到4.2.7.Final,再到4.2.8.Final,再到4.3.Final。在我升级到4.3.0.Final之前不会发生此问题。

Java版本信息

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

和例外:

play.api.UnexpectedException: Unexpected exception[NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:152) ~[play_2.10.jar:2.2.1]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
    at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10.jar:2.2.1]
    at scala.util.Success.flatMap(Try.scala:200) ~[scala-library.jar:na]
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
    at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:936) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3762) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3716) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]

问题答案:

我遇到了同样的问题。这里的问题是play-java-jpa工件(build.sbt文件中的javaJpa键)取决于规范的不同版本(version 2.0 -> "org.hibernate.javax.persistence" % "hibernate-jpa-2.0-api" % "1.0.1.Final")

当你添加hibernate-entitymanager 4.3时,这带来了较新的规范(2.1),并为entitymanager提供了不同的工厂提供程序。基本上,你最终在类路径中将两个jar都作为传递依赖项。

像这样编辑build.sbt文件,它将暂时解决你的问题,直到play针对较新的api依赖项发布新版本的jpa插件。

libraryDependencies ++= Seq(
javaJdbc,
javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
"org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final"
)

这是为了play 2.2.x。在以前的版本中,生成文件有所不同。



 类似资料:
  • 我有一个Play框架应用程序,我使用的是Hibernate 4.2。5.最终版本(通过Maven依赖关系管理器检索)。我决定升级到Hibernate4.3。0.最后,成功重新编译我的应用程序并运行它。 我得到了下面的例外,并没有能够找出原因。我降级回到4.2.5,这个问题没有发生。然后,我尝试在4.2.5之后的每个最终版本中升级Hibernate。也就是说,我从4.2.5。最终到4.2.6。最后,

  • 问题内容: 我正在升级jpa,hibernate,spring和jdk,以启用JPA 2.1中的新功能。但是我收到以下错误: 我已经阅读了有关此内容的其他帖子,但是它们无法解决我的计算机上的错误。例如,SJuan76对此帖子的回答建议升级到jpa2.1,但是我已将eclipse jpa项目方面设置为2.1版,并且我也将其包含在pom.xml中。单击此链接,您可以在完整的pom.xml中阅读各种库的

  • 问题内容: 我正在为spring数据编写示例。这是我的spring.xml 这些是我pom.xml中的依赖项 我还没有使用过persistence.xml 。我正在关注异常 引起原因:java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax / persistenc

  • 问题内容: 所以我在使用Spring JPA和Hibernate来确保我的项目的依赖关系时遇到了这个问题,我的依赖关系看起来是: 我得到的最终错误 我已经找到了所有关于消除依赖关系的解决方案,但是这样的操作导致与无法加载有关的错误。任何线索,我该如何解决? 问题答案: 添加对hibernateJPA2的依赖关系:

  • Seam Persistence 使得受管的Beans可支持事务处理,同时提供 Seam Managed Persistence Context, a conversation scoped extended persistence context for use in CDI based applications. 使用示例 @Produces @ConversationScoped @Seam

  • Mobile-Persistence(A-Team Mobile Persistence Accelerator )是一个轻量级的持久性框架,可与 Oracle 移动应用框架 (MAF)一起使用。它减轻了 RESTful 服务负载,并提供了一个完整的能够在脱机模式下使用移动应用程序的持久性层。在没有网的情况下,你也可以读写数据,当再次联机时,更改后的数据可以完成同步。当与 JDeveloper 集