문제 상황
delete 를 할 때 delete query 가 바로 나가지 않았다.
이유
delete() 를 까보면
먼저 find 를 한 뒤 id 를 갖고 있는다.
그리고 나서 remove() 를 호출하는데 이 remove() 안에는 delayedAfterCompletion() 이라는 메서드가 있다.
찾아봐도 정확한 정보를 얻기 힘들었지만 메서드 명만 보면 끝나고나서 쿼리가 나가게끔 하는 것 같았다.
이유 추가
hibernate 는 데이터의 정합성 등을 위해 쿼리 적용 순서가 있다.
delete 는 매우 마지막 순서이다.
해결 방법
1.
delete 메서드 다음 flush 를 때린다.
a.
바로 delete 나감
2.
JPQL 로 사용한다.
a.
기재된 쿼리로 바로 나감