티스토리 뷰
Spring
[Spring-Error] java.sql.SQLException: Generated keys not requested.
heemang.dev 2023. 11. 5. 13:09
원인
DB에서 기본키를 자동으로 증가하는 전략을 사용할 때, 서버에서 DB에 등록된 키를 가져오지 못해서 발생하는 오류
코드
public Long enrolBoard(BoardEnrolDto boardEnrolDto) {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement stmt = connection.prepareStatement("INSERT INTO Board(title, name, content, created_date, view_cnt) VALUES(?, ?, ?, ?, ?)");
stmt.setString(1, boardEnrolDto.getTitle());
stmt.setString(2, "userA");
stmt.setString(3, boardEnrolDto.getContent());
stmt.setTimestamp(4, Timestamp.valueOf(LocalDateTime.now()));
stmt.setLong(5, 0L);
return stmt;
}, keyHolder);
return keyHolder.getKey().longValue();
}
JdbcTemplate을 사용하여 DB에 Entity를 등록함과 동시에 키를 가져오는 코드이다.
해결
PreparedStatement에서 Statement.RETURN_GENERATED_KEYS 를 추가한다.