2016-05-22 70 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方法來代替。