2010-11-20 26 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中指定列會導致鑄造錯誤

實體類本身具有以下類型的屬性:String, int, and Collection。我在查詢中選擇的屬性是Stringint

回答

3

當您指定對象的屬性時,JPA將返回Object[]的列表。您可以將返回值轉換爲List<Object[]而不是List<Profile>以避免ClassCastException。如果您將Hibernate用作JPA提供程序,則可以將select子句映射到新對象。有關詳細信息,請參閱select clause文檔。

+2

我同意,但JPA支持任何提供者的「將select子句映射到新對象」,而不僅僅是Hibernate。我認爲用於容器類的術語是「構造器對象」,但我現在還不記得。 – 2010-11-21 17:41:38