2016-10-19 8 views
0

DBからデータを取得する際に問題があります。ibatisの値はIntegerでなければなりませんが、ハッシュマップを取得します

これはDAO

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

からの私の方法ですマッパーは私の問題は、私は整数としてマップから得られた値を使用したいときに私は(IntegerからHashmapを)ClassCastExceptionを取得している

<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> 

があります。手伝ってくれませんか。

これは私がそれを使用するループです:

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)として結果種類に言及する場合、結果は常にキーと特定の行の列の値としてのそれらの対応する値として列名をそれぞれ含む各地図ハッシュマップのリストです。

関連する問題