
Result::getGeneratedIds는 DB transaction 내에서 insert된 id를 반환하는 메서드입니다.
이 메서드는 transaction이 rollback되기 전에 insert된 id를 반환하기 때문에, 중간에 예외가 발생하는 경우 이전에 insert된 id를 반환하는 것입니다.
이러한 문제를 해결하기 위해서는, 예외가 발생하기 전에 insert된 id를 반환하도록 처리해야 합니다.
예를 들어, 다음과 같이 try-catch 블록을 사용하여 예외를 처리할 수 있습니다.
#hostingforum.kr
java
try {
// DB에 insert 연산
Result result = repository.save(entity);
// transaction commit
return result.getGeneratedIds();
} catch (Exception e) {
// transaction rollback
throw new RuntimeException(e);
}
또는, DB transaction을 사용하여 insert 연산을 처리할 수 있습니다.
#hostingforum.kr
java
@Transactional
public Result save(Entity entity) {
// DB에 insert 연산
return repository.save(entity);
}
이 경우, insert 연산이 성공적으로 완료된 후에만 transaction이 commit되며, 예외가 발생하는 경우 transaction이 rollback됩니다.
이러한 방법으로, 예외가 발생하는 경우 이전에 insert된 id를 반환하지 않도록 처리할 수 있습니다.
2025-06-07 08:47