2016-10-19 2 views
0

DB에서 데이터를 검색하는 데 문제가 있습니다.ibatis 값은 정수 여야하지만 해시 맵을 얻습니다.

이것은 매퍼

<select id="getMeasurementsPerNode" resultType="hashmap"> 
    SELECT 
     w.wd_ip AS `key`, 
     COUNT(m.id) AS `value` 
    FROM t_workers w 
    LEFT JOIN t_measurements m ON w.id = m.worker_id AND m.measurement_timestamp <![CDATA[>]]> DATE_SUB(NOW(), INTERVAL 1 HOUR) 
    WHERE w.active = 1 
    AND w.worker_type_id = 1 
    GROUP BY w.wd_ip 
    ORDER BY `value` DESC 
</select> 

은 내가 ClassCastException (Integer-Hashmap)을 얻을 정수로지도에서 얻은 값을 사용하고자 할 때 내 문제가 있습니다 DAO

@MapKey("key") 
public Map<String, Integer> getMeasurementsPerNode() throws SQLException; 

에서 내 방법입니다. 저를 도와주세요.

protected Map<String, Integer> nodeMeasurementsCount = nodeMapper.getMeasurementsPerNode(); 
for (Map.Entry<String, Integer> nodeThread : nodeMeasurementsCount.entrySet()) { 
    NodeRestartCounter nrc = new NodeRestartCounter(); 
    nrc.setNode(nodeThread.getKey()); 
    nrc.setMeasurementCount(nodeThread.getValue()); 
    nodeRestartCounterList.add(nrc); 
} 
+0

관련 코드를 추가하십시오. – Berger

+0

지도를 정수로 변환하는 방법을 보여줄 수 있습니까 –

+0

설명 업데이트. 내가 많이 봤어,하지만이 문제에 대한 해결책을 찾을 수 없습니다. – slavkovicdjordje

답변

0

당신은 매핑 같은 종류를 수행 할 수 없습니다

내가 그것을 사용하는 루프입니다.

해시 맵의 키와 값은 Map.Entry 객체에 포함되어 있으며 SqlMaps를 통해 직접 매핑 할 수 없습니다.

https://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html

당신이 해시 맵 (java.util.HashMap) 같은 결과 유형을 언급

는, 결과는 항상 특정 행에 대한 열 값으로 컬럼 키와 같은 이름과 해당 값을 포함하는 각지도 각각의 HashMap의 목록입니다.