IncorrectResultSetColumnCountException

Heeeoh·2024년 2월 27일
0

문제해결

목록 보기
2/4

예외 발생

멤버 전체조회 코드를 짜고 테스트했는데
IncorrectResultSetColumnCountException 예외가 터졌다
예외에서 코드 따라가보니

public List<Member> findAll() {
    String sql = "select  * from member";
    List<Member> members = template.queryForList(sql, Member.class);
    return members;
}

여기서 문제가 발생했다.
queryForList 메서드를 추적해서 가져왔다

@Override
public <T> List<T> queryForList(String sql, Class<T> elementType) throws DataAccessException {
	return query(sql, getSingleColumnRowMapper(elementType));
}

getSingleColumnRowMapper 한가지의 컬럼만 받아올 수 있다는 것이다.
내가 작성한 것은 모든 컬럼을 가져오는 것이었고 Member 테이블의 컬럼은 id, money 즉 2가지라서 actual 2가 뜬 것 같다.


결론

queryForList 를 사용하지 말고
query메서드로 RowMapper 람다식을 사용해서 조회하자

public List<Member> findAll() {
    String sql = "select  * from member";
    List<Member> members = template.query(sql, (rs, rowNum) -> {
        Member member = new Member();
        member.setMemberId(rs.getString("member_id"));
        member.setMoney(rs.getInt("money"));
        return member;
    });
    return members;
}
profile
열심히 살자

0개의 댓글