2016-05-22 49 views
0

当我运行jdbctemplate以从我的表中获取ID时,我得到exception。唯一的例外是:Spring JDBC模板抛出错误的结果大小异常

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

JdbcTemplate的queryForObject预计执行的查询将只返回一行。如果您获得0行或多于1行,将导致IncorrectResultSizeDataAccessException

我猜你的情况,queryForObject正在恢复Ø行或有多于1行,

所以,如果你不想抓住这个IncorrectResultSizeDataAccessException,去query方法来代替。