2012-04-16 4 views
5

나는 CrudRepository,이 저장소는 @query 표기법과 방법을 가지고 를 확장하는 저장소를 만든 :스프링 데이터 @query 매핑 결과 문제

코드 :

@Query("select itemType, count(*) as count from Item where User_id = :userId group by itemType") 
List<Map<String, Long>> countItemsForUser(@Param("userId") Long userId); 

내가 '문제 이것은 Map의 List가 아니라 Object의 ArrayList를 반환한다는 것입니다. JPA가 Map을 리턴 할 수 없다는 것을 읽었습니다. 그래서 List>에 결과를 채 웁니다.

이 문제를 해결하거나 결과 데이터에 빠르게 액세스하는 가장 좋은 방법은 무엇인지 모르겠습니다. 내가 캐스팅하려했지만 그 역시 작동하지 않았다

for(Object item: items) { 
    Map<String,Long> castedItem = (HashMap<String,Long>)item; 
} 
+0

루프 내에 Object 유형의 항목에는 getString 메서드가 없습니다. –

답변

4

최대 절전 모드의 공식 문서에서이 예제를 참조하십시오. Here

for (Object item:items) { 
    Object[] tuple = (Object[]) item; 
    String itemType = (String)tuple[0]; 
    Long count = (Long) tuple[1]; 

    }