유저 삭제를 jpa에서 하려고 하니 위와 같은 에러 발생
유저는 userRole과 1:N의 관계를 가지고 있는데
유저를 삭제하면 유저를 참고하고 있는 userRole이 참고할 대상이 사라지므로 에러가 난 것
유저를 참고하고 있는 userRole을 먼저 삭제한 후에 유저를 삭제하면 문제가 해결된다.
다만 이 경우 user와 userRole 삭제라는 2번의 삭제를 해야 하므로 다소 번거로운 면이 있다. 이를 개선하는 방법으로 처음 엔티티를 설정할때 cascade all 옵션을 주면 부모 엔티티를 삭제할 때 연관된 자식 엔티티도 같이 삭제된다.
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<UserRole> userRoles = new ArrayList<>();
고아객체를 선언하면 부모 객체(주인 객체)가 자식 객체(종 객체)의 생명 주기를 관리하게 되어 같이 삭제되게 된다.
@OneToMany(mappedBy = "user", orphanRemoval = true)
private List<UserRole> userRoles = new ArrayList<>();