WebSphere 7

WebSphere 7 & javax / persistence / OneToMany.orphanRemoval () - Fehler

Problem

Enthält in der Ruhezustand-Entwicklung eine Modellklasse mit JPA @OneToMany-Annotation:

    @OneToMany(
    cascade=CascadeType.ALL,
    fetch = FetchType.LAZY, mappedBy = "user")
    public Set getDebits() {
        return this.debits;
    }

Bei der Implementierung einer Webanwendung unter WebSphere 7 wurde die folgende Fehlermeldung angezeigt:

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.

Lösung

OneToMany.orphanRemoval ist in JPA 2.0 angegeben und sieht so aus, als ob WebSphere 7 eine ältere JPA-Bibliothek enthält, die vor Ihrenhibernate-jpa-2.0-api-1.0.0.Final.jar geladen wird.

Um dies zu beheben, legen Sie Ihre JPA 2.0-Bibliothek (hibernate-jpa-2.0-api-1.0.0.Final.jar) im Ordner für Klassenladeprogramme mit der höchsten Priorität von WebSphere ab, der unterWAS7_FOLDER\AppServer\java\jre\lib\ext liegt. Starten Sie die WebSphere-Serverinstanz erneut, damit sie wirksam wird.

Greifen Sie jetzt auf WebSphere Web Console zu -> Fehlerbehebung -> Class Loader Viewer. Stellen Sie sicher, dass Ihre Bibliothek geladen ist.

JPA2-On-WAS7

Jetzt lädt WebSphere 7 immer Ihre JPA 2.0-Bibliothek für den Ruhezustand.