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 Set getDebits() {
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.