YeaLow
article thumbnail
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로 설정한 뒤 댓글이 달린 게시글을 삭제해봤으나, 삭제되지 않았다.

profile

YeaLow

@YeaLow

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!