2

JPAからManagedBeanの属性にオブジェクトを割り当てると、ClassCastExceptionが発生します。

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)が異なるClassLoaderであるということです。

c1:WebappClassLoader(delegate = true; repositories = WEB-INF / classes /)
c2:WebappClassLoader(delegate = true)

どうすればこれを修正できますか?

4

2 に答える 2

2

あなたの環境は何ですか?Java EE、Spring、OSGi を使用していますか? WLS、WAS、GF のどのサーバーですか?

アプリケーションを再デプロイしましたか? 持続性ユニットは管理されていますか、それとも管理されていませんか?

アプリケーションを再デプロイしたが、EntityManagerFactory を閉じていないため、古いクラスでデプロイされたままになっている可能性があります。

于 2011-04-18T14:14:22.660 に答える
0

私は同じ問題を抱えていました。Glassfish 4.1.1 内の EclipseLink 2.5.2 JPA を使用した単純な JSF プロジェクト。

を正しく閉じることで解決しましたEntityManagerFactoryServletContextListener( @WebListener)を使用することをお勧めします(こちらまたはこちらをご覧ください)。

于 2016-11-26T21:39:50.873 に答える