java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (summer.favorite, CONSTRAINT FKh20v4bwlpu57uv12dl7i2qipe FOREIGN KEY (post_id) REFERENCES post (post_id))
Post객체를 삭제할 때 다음과 같은 에러가 발생했습니다.
이 에러는 부모 엔티티를 삭제하려고 하지만 자식 엔티티가 존재하여 데이터베이스의 외래 키 제약 조건을 위반하여 발생하는 예외입니다.
즉, Post를 삭제하려고 하지만 Favorite,Comment 엔티티에서 해당 Post를 참조하고 있기 때문에 삭제할 수 없는 것입니다. 이 경우에는 해당 Post를 참조하고 있는 Favorite,Comment 엔티티를 먼저 삭제하거나, Post와 연관된 자식 엔티티들을 모두 삭제한 후에 해당 Post를 삭제해야 합니다.
이를 해결하기 위해서는 CascadeType 옵션을 이용하여 부모 엔티티가 삭제될 때 자식 엔티티도 함께 삭제되도록 설정할 수 있습니다. 또는 외래 키를 참조하는 자식 엔티티를 삭제할 때 부모 엔티티도 함께 삭제되도록 ON DELETE CASCADE 옵션을 사용할 수도 있습니다.
Favorite,Comment를 삭제하는 경우 이 두 객체도 연관관계 관련 수정을 해줘야 하므로, Status를 Deleted로 변경하는 방식으로 구현을 진행 했습니다.