-
[Spring-Error] java.sql.SQLException: Generated keys not requested.legacy/Spring 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 를 추가한다.