WebSphere 7 & javax / persistence / OneToMany.orphanRemoval () ошибка
проблема
В разработке Hibernate содержит класс модели с аннотацией JPA @OneToMany:
@OneToMany( cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user") public SetgetDebits() { return this.debits; }
При развертывании веб-приложения в WebSphere 7 появляется следующее сообщение об ошибке:
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.
Решение
OneToMany.orphanRemoval
указан в JPA 2.0, и похоже, что WebSphere 7 содержит старую библиотеку JPA, которая загружается до вашегоhibernate-jpa-2.0-api-1.0.0.Final.jar
.
Чтобы исправить это, поместите вашу библиотеку JPA 2.0 (hibernate-jpa-2.0-api-1.0.0.Final.jar
) в папку загрузчика классов с наивысшим приоритетом WebSphere, которая находится в папкеWAS7_FOLDER\AppServer\java\jre\lib\ext
. Перезапустите экземпляр сервера WebSphere, чтобы изменения вступили в силу.
Теперь откройте веб-консоль WebSphere -> Устранение неполадок -> Средство просмотра загрузчика классов, убедитесь, что ваша библиотека загружена.
Теперь WebSphere 7 всегда будет загружать вашу библиотеку Hibernate JPA 2.0.