NoSuchMethodError : javax.persistence.Table.indexes()[Ljavax/persistence/Index; dans Hibernate
Lors de l'utilisation de l'application Play Framework avec Hibernate 4.3.0.Final, les utilisateurs peuvent rencontrer une exception NoSuchMethodError dans javax.persistence.Table.indexes(). Ce problème est spécifique à Hibernate 4.3.0.Final et ne se produit pas dans les versions précédentes comme 4.2.5.Final.
Cause première
L'erreur se produit en raison de un conflit entre différentes versions de la spécification Hibernate dans le chemin de classe de l'application. L'artefact play-java-jpa repose sur l'API Hibernate 2.0 (hibernate-jpa-2.0-api), tandis qu'Hibernate 4.3.0.Final introduit l'API Hibernate 2.1. Par conséquent, les deux versions d'API coexistent dans le chemin de classe, conduisant à l'exception NoSuchMethodError.
Solution
Pour résoudre ce problème, excluez la dépendance de l'API Hibernate 2.0 du build.sbt en incluant Hibernate 4.3.0.Final. Voici une version mise à jour du fichier build.sbt :
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
Remarques :
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!