关闭

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

标签: JdbcTemplaJDBC
580人阅读 评论(0) 收藏 举报
分类:
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
    at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:732)
    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:747)

解决办法就是捕捉这个异常然后返回当没有这条数据需用它替换的值即可。一般设置为null,这个无数据的返回值依需求而定。

String sql = "select tt from aa where bb=? and cc=?";
        Object[] params = { bb, cc};
        Double value = 0.0;
        try {
            value = this.getJdbcTemplate().queryForObject(sql, params,
                    Double.class);
        } catch (EmptyResultDataAccessException e) {
            value = 1.0;
        }

queryForMap,queryForLong,queryForInt…都可以依照此方法。

另一种方法是将查询出的0行,或者null的数据,转换成0,这种方法可以比较以下3条sql语句。

SELECT xxx FROM bendi where region_code=0 and ddate='201502';
SELECT sum(xxx) FROM bendi where region_code=0 and ddate='201502';
SELECT IFNULL(sum(xxx),0) FROM bendi where region_code=0 and ddate='201502';
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:61380次
    • 积分:960
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:2篇
    • 译文:0篇
    • 评论:8条
    文章分类