2010-11-20 3 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[]의 목록을 반환합니다. ClassCastException을 피하려면 List<Profile> 대신 반환 값을 List<Object[]으로 전송할 수 있습니다. JPA 프로 바이더로서 Hibernate를 사용하고 있다면 select 절을 새로운 객체에 매핑 할 수 있습니다. 자세한 내용은 select clause 설명서를 참조하십시오.

+2

나는 동의하지만, JPA는 Hibernate뿐만 아니라 모든 제공자와 함께 "select 절을 새로운 객체에 맵핑"을 지원한다. 나는 컨테이너 클래스에 사용 된 용어가 "Constructor Object"라고 생각하지만 지금은 기억이 나지 않는다. –

관련 문제