JPA delete관련 에러

성민·2023년 2월 12일
0

스프링 공부

목록 보기
13/15

post(one) - reply(many)의 관계에서 post를 삭제하려고 하면 영속성 문전이 문제로 reply가 삭제되지 못하고 rollback이 발생하는 문제가 발생했다.
해결방법을 찾아본 결과
cascase(영속성 전이)옵션을 CascadeType.ALL, CascadeType.REMOVE로 설정해주면 된다.

위의 방법으로 하다보니 다른 문제가 있었는데 주인객체들은 삭제하지 않고 싶었다.

영속성 관리에 따르면 댓글쪽에서 먼저 포스트를 null처리 해주면 관계가 끊어지면서 해결자체는 되었다.

더 찾아본 결과 @EntityListeners중 라는 엔티티 생명주기에 따라 처리하는 과정이 존재함을 알게 되었고 @PreRemove를 사용하여 post가 삭제되기 전에
post에 연결된 replies에서 포스트와 관계를 끊어주는 처리를 하였다.

@PreRemove
private void removeAssociationsWithChilds() {
    for (Reply e : replies) {
        e.setPostNull();
    }
}

0개의 댓글