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 SetgetDebits() { 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.
Jetzt lädt WebSphere 7 immer Ihre JPA 2.0-Bibliothek für den Ruhezustand.