public class User {
@Column(nullable=false,length = 100, unique =true)
private String username; // 중복방지를 위해 unique 조건을 걸어두었다
하지만 중복 아이디 가입시 예외처리 조건을 추가 안해두어 오류가 발생함
그래서 user.js에 내용을 수정 하였다.
$.ajax({
type:"POST",
url :"/auth/joinProc",
data:JSON.stringify(data),//htttp body 데이터
contentType: "application/json; charset=utf-8", //body데이터가 어떤타입인자(MIME)
dataType:"json"// 요청을 서버로해서 응답이 왔을때 기본적으로 모든것이 문자열(생긴게 json이라면 ) => javascript오브젝트로 변경
}).done(function(resp){
if(resp.status===500) {
alert("회원가입이 실패하셧습니다.");
history.back();
} else{
alert("회원가입이 완료 되었습니다.");
console.log(resp);
location.href="/";
}
// 8번줄부터 15번줄
문제: 댓글이 달린 게시글이 삭제되지 않는다.
해결방법 : Board 객체 내 replys에 cascade remove 옵션을 걸어준다. (cascade = CascadeType.REMOVE)
문제가 발생한 이유 : 게시글을 삭제할 때 해당 게시글과 연관된 댓글을 어떻게 처리할 지 정의가 안되어 있다.
그래서 cascade 옵션을 통해 연관된 엔티티를 어떻게 처리할지 정해줘야 한다.
cascade는 특정 Entity의 영속성 상태가 변경되었을 때 이를 연관된 Entity에도 *전파*시킬 지 선택하는 옵션이다.
쉽게 말해, 연관된 Entity를 어떻게 처리할지 정해주는 것을 말한다.
cf) * cascade 옵션 종류
1. CascadeType.PERSIST : 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화한다.
즉, Board객체를 영속성 컨텍스트에 올리면 replys객체도 영속성 컨텍스트에 올라간다.
2. CascadeType.REMOVE : 엔티티를 삭제하면 연관된 엔티티도 삭제한다.
3. CascadeType.ALL : 모든 cascade 옵션을 설정해준다. (PERSIST, REMOVE 등 옵션 모두 반영) => 위 문제에서 CascadeType.PERSIST로 설정한 뒤 댓글이 달린 게시글을 삭제해봤으나, 삭제되지 않았다.
'Springboot > Springboot Blog Project' 카테고리의 다른 글
회원 정보 수정 구현하기 (0) | 2022.09.25 |
---|---|
카카오 로그인 API 서비스 구현하기 (0) | 2022.09.25 |
스프링 작동 원리 복습! 중요✔✔ (0) | 2022.09.25 |
글 상세보기, 글 삭제하기, 글 수정하기 구현하기 (1) | 2022.09.25 |
글쓰기, 글 목록보기, 페이징 구현하기 (0) | 2022.09.25 |