ibatis 值应该是 Integer 但我得到 Hashmap
ibatis value should be Integer but I get Hashmap
我在从数据库中检索数据时遇到问题。
这是我的 DAO 方法
@MapKey("key")
public Map<String, Integer> getMeasurementsPerNode() throws SQLException;
有映射器
<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
(Hashmap
到 Integer
)。你能帮帮我吗
这是我使用它的循环:
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);
}
你不能做这种映射。
Hashmap 中的键和值包含在Map.Entry 对象中,无法通过 SqlMaps 直接映射。
https://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html
当您将结果类型称为 hashmap (java.util.HashMap)
时,结果始终是一个 HashMap 列表,每个映射包含列名作为键,它们的对应值作为特定行的列值。
我在从数据库中检索数据时遇到问题。
这是我的 DAO 方法
@MapKey("key")
public Map<String, Integer> getMeasurementsPerNode() throws SQLException;
有映射器
<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
(Hashmap
到 Integer
)。你能帮帮我吗
这是我使用它的循环:
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);
}
你不能做这种映射。
Hashmap 中的键和值包含在Map.Entry 对象中,无法通过 SqlMaps 直接映射。
https://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html
当您将结果类型称为 hashmap (java.util.HashMap)
时,结果始终是一个 HashMap 列表,每个映射包含列名作为键,它们的对应值作为特定行的列值。