Spring Boot - 没有这样的列异常

1 java informix spring jdbc spring-batch

我正在编写一个Spring Batch/Boot应用程序,用于将数据从informix数据库提取到java数据对象,但我无法弄清楚java.sql.SQLException:没有这样的列名问题.

这是方法:

    public UserDo getUserAddress(UserDo item) {
    try {
        myJdbcTemplate.queryForObject(getUserAddressQuery, new RowMapper<UserDo>() {
            @Override
            public UserDo mapRow(ResultSet rs, int arg1) throws SQLException {
                try {
                    item.setAddressLine1(rs.getString("cad_add_line_1")); 
                    item.setAddressLine2(rs.getString("cad_add_line_2" + "cad_add_line_3" + "cad_add_line_4"));
                    item.setCity(rs.getString("cad_city_name"));
                    item.setState(rs.getString("cad_ste_prv_cd"));
                    item.setZip(rs.getString("cad_postal_code" + "cad_postal_cd_4"));
                    item.setCountry(rs.getString("cad_country_code"));
                } catch (SQLException sqle){
                    logger.error(sqle.getMessage(), sqle);
                }
                return item;
            }
        }, item.getUserId());
    } catch (EmptyResultDataAccessException erdae) {
        logger.error(erdae.getMessage(), erdae);
    } catch (IncorrectResultSizeDataAccessException irsdae) {
        logger.error(irsdae.getMessage(), irsdae);
    }
    return item;
}
Run Code Online (Sandbox Code Playgroud)

这是由JdbcTemplate以下各项执行的查询:

    private final String getUserAddressQuery = "select cad_add_line_1, cad_add_line_2, cad_add_line_3, cad_add_line_4, cad_city_name, cad_ste_prv_cd, cad_postal_code, cad_postal_cd_4, cad_country_code, cad_county_parrish "
        + "from user_address "
        + "where user_id = ? "
        + "and user_type_code = '03' ";
Run Code Online (Sandbox Code Playgroud)

表列值都是类型CHAR,列大小从3to到35.

数据对象属性都是String类型.

这个方法是从我的ItemProcessor.

ResultSet当我使用调试器时,对象似乎是空的.我认为问题是从informix读取CHAR到Java String.这是因为除了从informix读取INTEGERJava 之外,完全相同的另一种方法完全相同int.

请帮忙.

Bor*_*der 5

你的问题在这里:

rs.getString("cad_add_line_2" + "cad_add_line_3" + "cad_add_line_4")
Run Code Online (Sandbox Code Playgroud)

这将编译为:

rs.getString("cad_add_line_2cad_add_line_3cad_add_line_4")
Run Code Online (Sandbox Code Playgroud)

我强烈怀疑没有这样的专栏存在.


你的意思是:

rs.getString("cad_add_line_2")
+ rs.getString("cad_add_line_3")
+ rs.getString("cad_add_line_4")
Run Code Online (Sandbox Code Playgroud)

你有完全相同的问题:

rs.getString("cad_postal_code" + "cad_postal_cd_4")
Run Code Online (Sandbox Code Playgroud)