Spring JDBC模板抛出一个不正确的结果大小异常

时间:2016-05-22 17:29:19

标签: sql database spring postgresql jdbc

当我运行exception以从我的表中获取id时,我得到jdbctemplate。例外是:

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

我的脚本如下:

CREATE TABLE LOGIN(
PERSON_ID SERIAL PRIMARY KEY, 
USERNAME VARCHAR(20) CHECK (USERNAME IS NOT NULL),
PASSWORD VARCHAR(20) CHECK (PASSWORD IS NOT NULL)
);

jdbctemplate code是:

@Override
public int getPersonId(UsernamePassword usernamePassword) {
    return jdbcTemplate.queryForObject("SELECT PERSON_ID FROM LOGIN WHERE USERNAME = ? AND PASSWORD = ?", Integer.class,
            usernamePassword.getUser_name(), usernamePassword.getPassword());

}

我也尝试了jdbctemplate提供的其他方法,但我没有运气。我将不胜感激任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

JdbcTemplate的queryForObject期望执行的查询只返回一行。如果您获得0行或多于1行,则会产生IncorrectResultSizeDataAccessException

我想在你的情况下,queryForObject返回行或多行,

因此,如果您不想抓住此IncorrectResultSizeDataAccessException,请转而使用query方法。