代码之家  ›  专栏  ›  技术社区  ›  Arthur Ronald

使用HQL时发生ClassCastException

  •  1
  • Arthur Ronald  · 技术社区  · 16 年前

    public class SomeClass {
    
        private Integer someField;
    
    }
    

    当我调用以下查询时

    select someField, count(*) from SomeClass inner join OtherClass... group by ...
    

    Map<Integer, Integer> result = new HashMap<Integer, Integer>();
    
    List<Object> objectList = query.list();
    for(Object object: objectList) {
        Object [] objectArray = (Object []) object;
    
        result.put((Integer) objectArray[0], (Integer) objectArray[1]);
    }
    

    我得到ClassCastException:无法将Long转换为整数

    问:我应该怎么做才能检索HQL返回的值为整数而不是Long????

    2 回复  |  直到 10 年前
        1
  •  3
  •   karoberts    16 年前

    如果你不知道会是哪一个( Integer Long ),您可以选择 Number 然后打电话 intValue() longValue() . 这条路

    result.put((Integer) objectArray[0], ((Number) objectArray[1]).intValue() );
    

        2
  •  1
  •   Bozho    16 年前

    我猜结果中的第二列。 count(*) 退货 Long ((Long) objectArray[1]).intValue()

    或者(按照建议),最好把地图改成 Map<Integer, Long>