2012-04-16 28 views
5

tôi đã tạo ra một Repository mà kéo dài CrudRepository, kho này có một phương pháp với một ký hiệu @Query:lò xo dữ liệu kết quả lập bản đồ @Query vấn đề

Code:

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

Vấn đề tôi m có là điều này trả về một ArrayList của Object (s) và không phải là một List of Map. Tôi đã đọc ở đâu đó rằng JPA không thể trả về Bản đồ vì vậy đó là lý do tại sao tôi kết quả trong Danh sách>.

Tôi không biết cách tốt nhất để giải quyết vấn đề này hoặc truy cập nhanh vào dữ liệu kết quả là gì. Tôi đã thử truyền nhưng điều đó không hiệu quả:

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

mục, thuộc loại nào Object bên trong vòng lặp không có phương thức getString? –

Trả lời

4

Xem ví dụ này trong tài liệu chính thức về Hibernate. Here

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

    } 
Các vấn đề liên quan