ClassCastException: JPA -> значение компонента (разные ClassLoaders) - PullRequest
2 голосов
/ 14 апреля 2011

Я получаю ClassCastException при назначении объекта из JPA атрибуту ManagedBean:

Object r = query.getSingleResult(); // javax.persistence.Query
ClassLoader c1 = this.getClass().getClassLoader();
ClassLoader c2 = r.getClass().getClassLoader();
user = (User) r; // blubb.model.User

Проблема в том, что c1 (ManagedBean) и c2 (EclipseLink) являются разными ClassLoaders:

c1: WebappClassLoader (делегат = true; репозитории = WEB-INF / classes /)
c2: WebappClassLoader (делегат = true)

Как это исправить?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Какова ваша среда? Вы используете Java EE, Spring, OSGi? Какой сервер, WLS, WAS, GF?

Вы повторно развернули свое приложение? Управляемый или неуправляемый блок персистентности?

Возможно, вы повторно развернули свое приложение, но никогда не закрывали EntityManagerFactory, поэтому оно все еще развернуто со старыми классами.

0 голосов
/ 27 ноября 2016

У меня была такая же проблема. Простой JSF-проект с EclipseLink 2.5.2 JPA внутри Glassfish 4.1.1.

Решено путем правильного закрытия EntityManagerFactory. Я рекомендую использовать ServletContextListener (@WebListener) (посмотрите здесь или здесь ).

...