IncorrectResultSetColumnCountException:不正确的列数:预期为1,实际为38 [英] IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 38

查看:669
本文介绍了IncorrectResultSetColumnCountException:不正确的列数:预期为1,实际为38的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用JdbcTemplate从数据库中检索Bean.这是我的方法:

I am using JdbcTemplate to retrieve a Bean from the db. Here is my method:

public List<trackerv3Livedata>  getTrackerData() {
    return List<trackerv3Livedata> live = (List<trackerv3Livedata>) jdbcTemplate.queryForList("select * from mmitrackerv3_livedata where accountid =?",new Object[]{aid}, trackerv3Livedata.class);
}

trackerv3Livedata bean结构如下:

And trackerv3Livedata bean Structure Are Following:

public class trackerv3Livedata implements Serializable {

    private static final long serialVersionUID = 2409168269491619888L;

    private int deviceid;
    private Long timestamp;
    private Mmitrackerv3Device mmitrackerv3Device;
    private Mmitrackerv3Account mmitrackerv3Account;
    private double latitude;
    private double longitude;
    private Double altitude;
    private Double speedkph;
    private Double heading;
    private Double gpssignal;
    private Integer geozoneid;
    private Double distancekm;
    private Double gsmsignal;
    private Double mainpower;
    private Integer laststatustime;
    private Double internalbattry;
    private Double temperature;
    private Short dinput1;
    private Short dinput2;
    private Short dinput3;
    private Short dinput4;
    private Short dinput5;
    private Short dinput6;
    private Short dinput7;
    private Short dinput8;
    private Short ainput1;
    private Short ainput2;
    private Short ainput3;
    private Short ainput4;
    private Short doutput1;
    private Short doutput2;
    private Short doutput3;
    private Short doutput4;

    /* There are Some Getter And Setter Method With Constructor */
}

在我的情况下,完全可以不击中查询,所以我的问题是如何解决以下错误消息.

In my scenario it is complete possible to NOT get a hit on my query so my question is how do I get around the following error message.

org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 38

在我看来,我应该只返回null而不是引发异常.我怎样才能解决这个问题?预先感谢.

It would seem to me that I should just get back a null instead of throwing an exception. How can I fix this? Thanks in advance.

推荐答案

JdbcTemplate方法

JdbcTemplate method

queryForList(String sql, Class<T> elementType)

对于单列查询很有用,您只能指定列类型.如果您在ResultSet中需要多个列,则使用会更准确

is useful for one-column-queries, you may only specify the column type. If you need more than one column in ResultSet, it's more accurate to use

query(String sql, RowMapper<T> rowMapper)

作为RowMapper的实现,您可以使用自己的实现,或

as implementation for RowMapper you may use your own, or

jdbcTemplate.query(sql, new BeanPropertyRowMapper<T>(clazz));

所以您的情况可能是:

public List<Trackerv3Livedata> getTrackerData() {
    String sql = "SELECT * FROM mmitrackerv3_livedata mlive " +
                 "JOIN mmitrackerv3_device mdevice ON mlive.accountid = " +
                 "mdevice.accountid WHERE mlive.accountid = " + aid;

    return jdbcTemplate.query(sql,
        new BeanPropertyRowMapper<Trackerv3Livedata>(Trackerv3Livedata.class));
}

这篇关于IncorrectResultSetColumnCountException:不正确的列数:预期为1,实际为38的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆