티스토리 뷰

원인

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 를 추가한다.

Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30