본문 바로가기
프로젝트/Spring Boot 블로그프로젝트

[블로그프로젝트] 35. 게시글삭제시 오류수정(1)

by dantriss 2023. 6. 23.

유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


댓글이 있는 게시글을 삭제하려고하면 생기는 오류가 있어서 수정하고자한다.

아래와같이 댓글이 있는 게시글을 삭제해보면

이렇게 에러가 뜨는걸 확인할 수 있다.

 

그에 반해서 얼러트는 글삭제가 잘 되었다고 말해주고 있다.

 

메인페이지를 확인해보면 삭제되지 않은 게시글을 확인할 수 있다.

 

 

해당 부분을 고치기위해서 board.js로 이동해서 조건문을 추가해준다.

            if(resp.status !== 200){
                alert("글삭제실패");
            }else{
                alert("글삭제완료");
            }

 

서버에서 테스트를 진행해보면 정상적으로 작동했을때인 200값을 리턴해주지 않아서 얼러트가 작동하는걸 확인할 수 있다.

 

댓글이 없는 게시글을 만들어 삭제를 진행해보면 삭제가 완료되었다는 얼러트가 나오고

 

해당 게시글은 삭제가 된 모습을 확인해 볼 수 있다. 1차적인 문제는 해결 완료

 

여기서 댓글이 있는 게시글이 삭제가 되지 않는 이유는 게시글 삭제를 시도 했을때 댓글들은 어떻게 처리를 할지 정해놓지 않았기 때문이다.

reply테이블에서 id라는 컬럼명으로 게시글의 고유번호를 가지고 있는데 해당 게시글을 삭제를 해버리면 게시글의 고유번호를 가지고 있는 

댓글들은 잡고있어야할 손이 없어지는 상황이라 에러가 뜬다.

해당 게시글을 삭제하면 손을 놓게 해주어야 한다.

 

그래서 이문제를 해결하기 위해서 board 객체로 이동해서 replys에 해당부분을 추가해주면 된다.

cascade = CascadeType.REMOVE는 삭제하면 연관된 값들이 같이 삭제된다.

@OneToMany(mappedBy = "board", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @JsonIgnoreProperties({"board"})
    @OrderBy("replyId desc")
    private List<Reply> replys;

 

그 후 삭제를 시도해보면 삭제가 완료되었다는 얼러트가 나오고 메인에서 확인해보면 댓글을 가지고 있던 게시글3이 삭제된걸 확인할 수 있다.

db도 확인해보면 게시글 3과의 손을 잡고 있던(참조하고있던) 댓글이 함께 삭제된걸 확인할 수 있다.

 

댓글