[ERROR] Hibernate remove() 가 작동하지 않음

charco·2021년 9월 2일
0

!ERROR!

목록 보기
14/17

문제

테스트를 하는 도중 remove() 가 아무런 에러도 없이
작동하지 않는 문제가 발생했다.

에러에 관한 로그도 찍히지 않아서 난감했다.

이걸로 두시간정도를 날린 듯 하다...

원인

원인은 간단했다.
A 와 B 라는 엔티티이 있다.
이 둘은 OneToOne 단방향 관계였다.

A <- (참조) - B

그래서 A는 B를 필드로 갖지 않는다.
대신 B는 A를 필드로 갖고 A의 기본키에 조인한다.
여기다가 CasacadeType ALL 을 지정한게 원인이었다.

조사

구글링 했더니 스택오버플로우에 비슷한 문제를 묻는 글이 있었다.

연관돼있는 두 엔티티중에 한 엔티티가 CascadeType Persist 를 갖고 있다면 이 엔티티가 먼저 삭제되고 다른 엔티티가 삭제될때 삭제되지 않는다는 것이었다.
왜 그런지는 나와있지 않고 Jpa 스펙에 이렇게 정의돼있다고 한다.

소감

문제는 발생했는데 원인을 내가 직접 찾아야 하는 상황이엇다.
사용자 입장에서 이런 상황은 참 끔찍하지 않을 수 없다.
반대로 내 서비스를 경험하는 사용자도 이런 경험을 할 수 있다.
주의하자.

profile
아직 배우는 중입니다

0개의 댓글