You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
UserService.withdraw()(src/main/java/ssu/eatssu/domain/user/service/UserService.java)는 탈퇴 처리 전 inquiry.clearUser()를 호출해 문의 이력을 보존하려는 의도로 보인다(Review::clearUser와 동일한 패턴). 그런데 User.userInquiries는 cascade = CascadeType.ALL(REMOVE 포함)로 선언되어 있어서(src/main/java/ssu/eatssu/domain/user/entity/User.java), User 삭제 시 컬렉션에 남아있는 Inquiry가 FK가 null이 되었는지와 무관하게 Hibernate에 의해 cascade 삭제될 가능성이 있다. Review는 cascade에 REMOVE가 없어 이 패턴이 의도대로 동작하지만, Inquiry는 그렇지 않을 수 있다. 실제 DB 동작을 테스트로 검증하고, 문의 이력을 정말 보존해야 한다면 cascade 설정을 REMOVE 없이 조정해야 한다.
Fix Report
고쳐야 할 사항
UserService.withdraw()(src/main/java/ssu/eatssu/domain/user/service/UserService.java)는 탈퇴 처리 전inquiry.clearUser()를 호출해 문의 이력을 보존하려는 의도로 보인다(Review::clearUser와 동일한 패턴). 그런데User.userInquiries는cascade = CascadeType.ALL(REMOVE 포함)로 선언되어 있어서(src/main/java/ssu/eatssu/domain/user/entity/User.java),User삭제 시 컬렉션에 남아있는Inquiry가 FK가 null이 되었는지와 무관하게 Hibernate에 의해 cascade 삭제될 가능성이 있다.Review는 cascade에 REMOVE가 없어 이 패턴이 의도대로 동작하지만,Inquiry는 그렇지 않을 수 있다. 실제 DB 동작을 테스트로 검증하고, 문의 이력을 정말 보존해야 한다면 cascade 설정을 REMOVE 없이 조정해야 한다.첨부자료