@OnetoMany 관계 삭제
2022. 4. 21. 18:14ㆍBackEnd(Java)/Spring Data JPA
@OnetoMany관계에서 delete 연산을 해보자.
Gym과 Member가 (1:N)인 관계이다(Member가 연관관계의 주인)
Gym을 삭제하려고 하면 아래의 오류가 뜬다.
"Cannot delete or update a parent row: a foreign key constraint fails"
해당 오류를 찾아보니 두 테이블 사이 foreign key로 연결되어 있을 경우에 삭제하면 나타나는 오류이다.
Member가 Gym의 id값을 fk로 가지고 있다. 그래서 DB에서 삭제하지 못하게 오류가 뜨게 된다.
그렇다면 어떻게 해야 삭제를 할 수 있을까?
두 엔티티 사이의 연관관계를 끊어 버리는 것이다.
연관관계의 주인인 Member에서는 gym= null로 하고, Gym에서는 List <Member> member의 컬렉션을 삭제하여 연관관계를 끊어버리는 것이다.
//Gym 엔티티
//헬스장 - PT 삭제
public void deleteGym(){
int size=getPt().size();
for (int i = 0; i < size; i++) {
getPt().get(0).deleteGym();
getPt().remove(0);
}
}
//Member 엔티티
//Pt가 속한 헬스장 연관관계 해제
public void deleteGym(){
this.gym=null;
}
이렇게 하면 Gym을 삭제했을 때 Gym은 제대로 삭제되고 Member 엔티티의 gym 필드는 null로 되어 삭제 연산이 작동하게 된다.
참고자료
반응형
'BackEnd(Java) > Spring Data JPA' 카테고리의 다른 글
조회 API 성능 최적화 (0) | 2023.06.13 |
---|---|
컬렉션 패치 조인 (0) | 2023.06.12 |
부모 - 자식 엔티티 관계 삭제 (0) | 2022.04.19 |
생성 시간, 수정 시간 자동으로 값 넣기 (0) | 2022.03.29 |
JPA - Mysql 컬럼명 대문자 생성이 안될 때 (0) | 2022.03.24 |