java - IncorrectResultSetColumnCountException : Incorrect column count: expected 1, 实际 38

标签 java spring jdbctemplate

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

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结构如下:

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 */
}

在我的情况下,我的查询完全有可能不会被点击,所以我的问题是如何绕过以下错误消息。

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

在我看来,我应该只返回一个 null 而不是抛出异常。我怎样才能解决这个问题?提前致谢。

最佳答案

JdbcTemplate 方法

queryForList(String sql, Class<T> elementType)

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

query(String sql, RowMapper<T> rowMapper)

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

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));
}

关于java - IncorrectResultSetColumnCountException : Incorrect column count: expected 1, 实际 38,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33008205/

相关文章:

java - 在另一个类中调用public static void main的内容

java - 英语缩写灾难

java - 使用 spring xd 在 Hadoop 中加载数据

spring - Spring Boot child() 上下文的 Logback 分离

java - 如何在postgreSql中使用JDBCTemplate batchUpdate捕获错误记录?

java - manipule jBPM 5.4 模拟定时器事件的时间

java - 如何将用户字符串输入与整个数组中的字符串进行比较?

java - 我怎样才能修改mysql更新方法?

java - RowMapper是抽象的,无法实例化

java - 我们可以将Java中字符串中开头和结尾有符号的部分替换为Identify吗?