Erreur WebSphere 7 et javax / persistence / OneToMany.orphanRemoval ()
Problème
Dans le développement Hibernate, contient une classe de modèle avec l'annotation JPA @OneToMany:
@OneToMany( cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user") public SetgetDebits() { return this.debits; }
Lorsque l'application Web est déployée sur WebSphere 7, elle affiche le message d'erreur suivant:
Caused by: java.lang.NoSuchMethodError: javax/persistence/OneToMany.orphanRemoval()Z at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1912) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707) ... 118 more
P.S hibernate-jpa-2.0-api-1.0.0.Final.jar
is included in the library path.
Solution
LeOneToMany.orphanRemoval
est spécifié dans JPA 2.0 et il semble que WebSphere 7 contient une ancienne bibliothèque JPA, qui est chargée avant voshibernate-jpa-2.0-api-1.0.0.Final.jar
.
Pour résoudre ce problème, placez votre bibliothèque JPA 2.0 (hibernate-jpa-2.0-api-1.0.0.Final.jar
) dans le dossier du chargeur de classe de priorité la plus élevée de WebSphere, qui se trouve sousWAS7_FOLDER\AppServer\java\jre\lib\ext
. Redémarrez l'instance de serveur WebSphere pour prendre effet.
Accédez maintenant à la console Web WebSphere -> Dépannage -> Afficheur du chargeur de classe, assurez-vous que votre bibliothèque est chargée.
Désormais, WebSphere 7 chargera toujours votre bibliothèque Hibernate JPA 2.0.