Erreur Hibernate: JavaReflectionManager ne peut pas être converti en MetadataProviderInjector

Erreur de mise en veille prolongée: JavaReflectionManager ne peut pas être converti en MetadataProviderInjector

Problème

En utilisant l'annotation Hibernate, après la mise à niveau de la version Hibernate dev3.2.7 àv3.6, le message d'erreur suivant s'affiche:

Caused by: java.lang.ClassCastException:
    org.hibernate.annotations.common.reflection.java.JavaReflectionManager
    cannot be cast to org.hibernate.annotations.common.reflection.MetadataProviderInjector

Voici la liste des bibliothèques d'annotations Hibernate:

  1. hibernate3-3.6.0.Final.jar

  2. hibernate-annotations-3.4.0.GA.jar

  3. hibernate-commons-annotations-3.0.0.GA.jar

Solution

Hibernate annotation module is merged into Hibernate core module since v3.5 (si ce n'est pas une erreur). Dans ce cas, Hibernate détecte deux modules d'annotation, provenant à la fois de «Hibernate core» et de «Hibernate annotation», provoquant un conflit et invitant lesClassCastException.

Pour résoudre ce problème, supprimez simplement leshibernate-annotations-3.4.0.GA.jar ethibernate-commons-annotations-3.0.0.GA.jar, car la dernière bibliothèque principale d'Hibernate est capable d'effectuer une tâche d'annotation sans autre dépendance.