본문 바로가기
seok2

중간 테이블 데이터 삭제 문제

by shulk 2023. 12. 29.

문제+원인

보드에 참여중인 유저들의 정보는 2번째 캡처 보면  7번 보드에 1,3번 유저들이 참여중인데 

만약 3번 유저가 이제 보드에서 나가고 싶어 해서 사용자보드에서  보드가 7번,유저가3번인 해당 pk번호 16번만 삭제 하는데 사용자 보드에 보드 번호가 7번인 데이터들 다 사라지고 보드 테이블에서도 보드가 7번인게 삭제 되었다.

알고보니 사용자보드 엔티티에  보드 필드에 영속성 전이 ALL이 걸려 있어서 그런거였다.

그래서 영속성 전이 설정 상태에서 사용자 보드의 로우만 지우는 방법이 없나 고민이였다

ERD
사용자보드(보드랑 유저의 ManyToMany 컬럼 추가 중간테이블)
보드

 

사용자보드 엔티티(보드랑 유저의 ManyToMany 컬럼 추가 중간테이블)

 

해결

영속성 전이 걸려있는 상태에서 사용자보드에 해당 로우만 지우는 방법은 없는거였다.
그러니 최종적으로는 사용자보드에서 영속성 전이 하면 안된다. 

그러면 영속성 전이 ALL 지우고 했을땐 정상적으로 해결 됬지만 서비스 자체 회원 탈퇴를 할 경우엔 어떻게 되나 궁금했는데  보통 회원 탈퇴시 그 회원의 데이터도 같이 삭제는 안한다하고 남겨둔다 한다..

이 부분은 법에 관련있는거라 당연 정확히는 모른다.

어쨋든 중간테이블인 사용자보드에 보드 필드에 영속성 전이 ALL 걸려있는걸 해제하면 된다.