Spring 에서 queryForObject() (queryForMap() 도 결국 queryForObject() 를 호출하기 때문에 동일함)사용했는데, 쿼리 결과값이 1 이어야 하는데 실제 결과값은 0 일때 다음과 같은 에러가 발생한다.
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
이 경우에는 try, catch 를 사용하면 해결 가능하다.
import org.springframework.dao.EmptyResultDataAccessException;
...
String sql = new String("select uId from Users u where userId = ? limit 1");
try {
return (Integer)jdbcTemplate.queryForObject(sql, new Object[] {userId}, Integer.class);
} catch (EmptyResultDataAccessException e) {
return 0;
}
queryForObject() 메소드는 반드시 try, catch 를 사용해야 한다. query() 를 사용할 경우에는 마지막 인자로 ResultSet 이나 RowMapper 를 구현해야하기 때문에 try, catch 가 필요없다.
출처:
http://www.coderanch.com/t/468501/Spring/handling-simpleJdbcTemplate-error
'Engineering > Java' 카테고리의 다른 글
blowfish 를 이용한 문자열 인코딩/디코딩 예제 (0) | 2013.10.30 |
---|---|
Spring jdbcTemplate 를 이용해서 프로시저/함수 호출 (0) | 2013.08.29 |
c# enum Flags 를 java 코드로 변경 (0) | 2013.07.24 |
Mac 에서 한글이 포함된 java 소스 컴파일시 warning: unmappable character for encoding EUC_KR (0) | 2013.07.23 |
JAVA 에서 큰 숫자 표현 (1) | 2013.07.18 |