[Request processing failed; nested exception is org.springframework.dao.TransientDataAccessResourceException: StatementCallback;
...Before start of result set; nested exception is java.sql.SQLException: Before start of result set]을(를) 발생시켰습니다.
java.sql.SQLException: Before start of result set
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:98)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:90)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:64)
at com.mysql.cj.jdbc.result.ResultSetImpl.checkRowPos(ResultSetImpl.java:528)
//에러 발생 지점
public class MemberAuthDao extends JdbcTemplate{
...
public MemberAuthDto getMemberAuthDto(String uri) {
String sql = ...
return query(sql, resultSetExtractor());
}
private ResultSetExtractor<MemberAuthDto> resultSetExtractor() { ... }
}
//Before(에러가 난 코드)
private ResultSetExtractor<MemberAuthDto> resultSetExtractor(){
return (rs -> {
MemberAuthDto dto = new MemberAuthDto();
dto.setAuthSeq(rs.getInt("auth_seq"));
dto.setMemberSeq(rs.getInt("member_seq"));
dto.setAuthNum(rs.getString("auth_num"));
dto.setAuthUri(rs.getString("auth_uri"));
dto.setAuthYn(rs.getString("auth_yn"));
dto.setRegDtm(rs.getLong("reg_dtm"));
dto.setExpireDtm(rs.getLong("expire_dtm"));
return dto;
});
}
//After(수정)
private ResultSetExtractor<MemberAuthDto> resultSetExtractor(){
return (rs -> {
MemberAuthDto dto = null;
while(rs.next()) {
dto = new MemberAuthDto();
dto.setAuthSeq(rs.getInt("auth_seq"));
dto.setMemberSeq(rs.getInt("member_seq"));
dto.setAuthNum(rs.getString("auth_num"));
dto.setAuthUri(rs.getString("auth_uri"));
dto.setAuthYn(rs.getString("auth_yn"));
dto.setRegDtm(rs.getLong("reg_dtm"));
dto.setExpireDtm(rs.getLong("expire_dtm"));
}
return dto;
});
}