2010-11-20 8 views
3

jpql/jpa 2.0クエリで列を指定すると、select p.id, p.lastName, p.firstName from Profile p where p.group = :groupというエラーが表示されます。[Ljava.lang.Object; cannot be cast to com.profs.ws.Profile...このキャストの問題を解決する方法を知っている人はいますか?jpql selectで列を指定するとキャストエラーが発生する

Profileエンティティクラス自体には、次のタイプのプロパティがあります。String, int, and Collection。クエリで選択しているプロパティは、タイプStringまたはintのいずれかです。

答えて

3

オブジェクトのプロパティを指定すると、JPAはObject[]のリストを返します。戻り値をList<Profile>の代わりにList<Object[]にキャストしてClassCastExceptionを回避することができます。 HibernateをJPAプロバイダとして使用している場合は、select句を新しいオブジェクトにマップできます。詳細については、select clauseのドキュメントを参照してください。

+2

私は同意しますが、JPAは、Hibernateだけでなく、任意のプロバイダで「select句を新しいオブジェクトにマップする」ことをサポートしています。私は、コンテナクラスに使用される用語は "コンストラクタオブジェクト"だと思うが、私は現時点では覚えていない。 –

関連する問題