Maison  >  Article  >  Java  >  Pourquoi la mise à niveau de la mise en veille prolongée de 4.2.5.Final vers 4.3.0.Final provoque-t-elle une « NoSuchMethodError » dans « javax.persistence.Table.indexes() » ?

Pourquoi la mise à niveau de la mise en veille prolongée de 4.2.5.Final vers 4.3.0.Final provoque-t-elle une « NoSuchMethodError » dans « javax.persistence.Table.indexes() » ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 01:54:12962parcourir

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

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

Question :

Lors de la mise à niveau depuis Hibernate 4.2.5.Final à 4.3.0.Final dans une application Play Framework, une exception se produit :

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

Réponse :

Le problème survient en raison d'un conflit entre différentes versions de les dépendances de la spécification Java Persistence API (JPA) dans le chemin de classe de l'application. Plus précisément, le plugin Play Framework JPA inclut une dépendance à la spécification JPA 2.0, tandis qu'Hibernate 4.3.0.Final nécessite la nouvelle spécification JPA 2.1.

Pour résoudre ce problème, excluez la dépendance de la spécification JPA 2.0 de la version. .sbt et remplacez-le par la dépendance suivante sur la spécification JPA 2.1 :

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

Pour Jouez à 2.2.x, modifiez le fichier build.sbt comme suit :

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

En excluant la dépendance JPA 2.0 et en incluant la dépendance JPA 2.1, vous vous assurez que la version correcte de la spécification JPA est utilisée, en résolvant l'exception NoSuchMethodError.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn