我正在使用Spring Boot 1.5,我想按其状态(四个状态)分组警报,从而在存储库中使用本机查询。当我运行该查询时,它给了我结果。但不适用于该服务。
使用控制台运行时得到的结果是:
https://drive.google.com/open?id=1eson3nEHAIEr-jdEgkC1-tw2acRsW728

服务是:

  @Override
public List<DashboardAlertVO> countingStatus() {
    return alertRepository.countStatus()
            .stream()
            .map(o -> new DashboardAlertVO(AlertStatus.fromValue((String) o[0]),
                    ((Integer) o[1])))
            .collect(Collectors.toList());
}


所以我得到这个错误:

"message": "java.math.BigInteger cannot be cast to java.lang.Integer",


我不知道这段代码到底有什么关系。请帮忙 !非常感谢。

最佳答案

我们不能仅通过使用整数关键字将类型转换BigInteger转换为Integer。相反,您应该使用BigInteger类的内置方法intValue()来获取整数部分。

@Override
public List<DashboardAlertVO> countingStatus() {
    return alertRepository.countStatus()
        .stream()
        .map(o -> new DashboardAlertVO(AlertStatus.fromValue((String) o[0]),
                (o[1].intValue())))
        .collect(Collectors.toList());
}

09-26 00:15