erreur WebSphere 7 & javax/persistence/OneToMany.orphanRemoval ()

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.

JPA2-On-WAS7

Désormais, WebSphere 7 chargera toujours votre bibliothèque Hibernate JPA 2.0.