[22/03/15]JPA delete관련 에러 (Cascade 영속성 전이 관련 에러)

Que Lin·2022년 3월 15일
0

오류

Cannot delete or update a parent row: a foreign key constraint fails

@OneToOne이나 @OneToMany에서 붙여주는 영속성 전이 Cascade 때문에 일어난 문제

필드에 cascade = CascadeType.ALL을 붙여주면 그 필드와 연관된 엔티티를 persist 해주지 않아도 persist한 효과가 나면서 영속성이 된다.

하지만 Cascade를 사용하면 편리하긴하지만 주의해야할 점이 있다. 두가지 조건을 만족해야 사용할 수 있다.

1.등록 삭제 등 라이프 사이클이 똑같을 때

2. 단일 엔티티에 완전히 종속적일때만 사용 가능하다.

ex)parent-child라는 연관관계를 맺고있을 때 child를 다른곳에서도 관계를 맺고있다면 사용하면 안된다.

내 프로젝트의 ChatRoom 엔티티는 Member 에서도 ChatMessage 에서도 참조하고 있기 때문에 삭제가 되지 않았던 것이다.

나의 해결 방법 : 시간관계상 간단하게 구현하기 위해 굳이 필요 없었던 Member 테이블과의 참조관계를 지웠다.

출처 https://cantcoding.tistory.com/75

profile
1일 1커밋 1일 1벨로그!

0개의 댓글