❗문제 상황
댓글이 달린 일정을 삭제하려고 DELETE 요청을 보냈더니 삭제가 실패함.

응답은 500 에러가 뜸

콘솔에 이런 게 찍히는데요.....? FK 관련 오류 아니 삭제하게 해 달라고요
원인은...... `comments` 테이블의 schedule_id가 schedules.id를 참조하는 외래키(FK)라서 부모 삭제를 db가 참조 무결성을 지키려고 막음..... ~
해결
댓글이 가리키는 일정이 없어지면 댓글이 이상해지니까 님 댓글 먼저 삭제를 해야 됨 아..!
// 댓글 일괄 삭제 쿼리 메서드
void deleteAllByScheduleId(Long scheduleId);
CommentRepository에 또 쿼리 메서드 추가 아니 얘 진짜 편하네 QueryDSL은 들어만 봤는데 이것보다 더 편하나....?
// 일정 삭제
@Transactional
public void delete(Long scheduleId) {
commentRepository.deleteAllByScheduleId(scheduleId); // 얘 추가
Schedule schedule = getScheduleOrThrow(scheduleId);
scheduleRepository.delete(schedule);
}
ScheduleService에 댓글 먼저 삭제...

하하 댓글이 존재하는 일정도 정상적으로 삭제되고 댓글, 일정 데이터가 DB에서 함께 삭제되는 것을 확인......
하하 성공
'IL > TIL' 카테고리의 다른 글
| 20260310 [TIL] 클라우드 아키텍처 설계 & 배포 (0) | 2026.03.10 |
|---|---|
| 20260304 [TIL] - 코드 개선 (0) | 2026.03.03 |
| 20260210 [TIL] (0) | 2026.02.10 |
| [TIL] Hibernate Dialect(MySQL8Dialect) 오류 스키마 DDL 경고 (0) | 2026.02.08 |
| 20260129 [TIL] - Spring 입문 시작에서 (0) | 2026.01.29 |