Gridgain缓存SQL查询返回[S转Short报ClassCastException如何解决
异常产生原因
- Java中
[S是原生short[](短整型数组)的类型标识,你打印的返回值类型class [S已经明确查询返回的activity字段是短整型数组对象,不是单个Short类型值 - 代码直接将数组对象强转为单个
short值,二者类型不匹配,因此抛出类型转换异常。
正确处理方式
先将返回值强转为short[]类型,再遍历数组元素添加到结果列表即可,参考代码如下:
Object xx = null; List<Short> activityList = new ArrayList<>(); try (QueryCursor<List<?>> cursor = patientTriggerCache.query(sql)) { for (List<?> row : cursor) { xx = row.get(0); // 先强转为short数组 short[] activityArr = (short[]) xx; // 遍历数组元素添加到列表 for (short val : activityArr) { activityList.add(val); } } }
如果有多个行的查询结果需要合并数组元素,上述写法直接适用;如果需要按行保留数组结构,可直接将short[]存入结果集合。
内容的提问来源于stack exchange,提问作者sachith
相关产品推荐
相关产品推荐

