반응형
게시글 삭제를 하던중에 오류가 발생했다. 이유를 알아보자
1. 상황 설명
- 아래와 같은 게시글 상세보기 페이지에서 대댓글이 달린 댓글을 삭제했을때 오류가 발생했다.
- 에러 메시지 확인
{"errorMessage":"could not execute statement [Cannot delete or update a parent row: a foreign key constraint fails (profile.board_sub_comment, CONSTRAINT FK_BOARD_SUB_COMMENT_board_comment_id_BOARD_COMMENT_board_commen FOREIGN KEY (board_comment_id) REFERENCES board_comment (board_comment_id) ON)] [delete from board_comment where board_comment_id=?]; SQL [delete from board_comment where board_comment_id=?]; constraint [null]"}
- 뭘까 싶어서 생각해봤는데 혹시 Cascade설정을 안해줘서 그런걸까? 왜냐하면 대댓글이 안달린 댓글은 삭제해도 문제가 없었기 때문이다.
2. 해결
- 일단 생각한대로 댓글 엔티티로 가서 Cascade 설정을 해봤다.
- 당연히 @OneToMany안에는 Cascade 설정이 안되어있었다.
@ToString.Exclude
@OneToMany(mappedBy = "boardComment")
private List<BoardSubComment> boardSubComments = new ArrayList<>(); // 대댓글
- 이제 cascade속성을 추가하자
@ToString.Exclude
@OneToMany(mappedBy = "boardComment", cascade = CascadeType.ALL)
private List<BoardSubComment> boardSubComments = new ArrayList<>(); // 대댓글
- 성공이다! 문제없이 삭제가 잘 되었다.
결론적으로 댓글에 대댓글을 묶어놨는데 댓글을 삭제할때 key가 연관된 대댓글을 지우지 않아서 생긴 문제였다. 앞으론 잘 확인하고 코드를 작성해야겠다.
2023.08.17 - [Spring 테스트코드/기초 지식] - Spring test - 코드 작성중 만난 트러블 슈팅(서비스)
반응형
'Spring > Spring 오류해결' 카테고리의 다른 글
Spring Boot 3 및 Spring Batch 5에서 배치 테이블 자동 생성 문제 해결하기 (0) | 2023.11.23 |
---|---|
사용법 미숙지로 인한 controller test - 오류해결 (2) | 2023.08.08 |