그룹과 사용자라는 두 개의 엔티티가 있다고 가정 해 보겠습니다. 모든 사용자는 여러 그룹의 구성원이 될 수 있으며 모든 그룹은 여러 사용자를 가질 수 있습니다.
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
이제 그룹을 제거하고 싶습니다 (구성원이 많다고 가정 해 보겠습니다).
문제는 일부 그룹에서 EntityManager.remove ()를 호출 할 때 JPA 공급자 (내 경우에는 Hibernate) 가 조인 테이블에서 행을 제거하지 않고 외래 키 제한으로 인해 삭제 작업이 실패한다는 것입니다. 사용자에 대한 remove () 호출은 잘 작동합니다 (나는 이것이 관계의 소유와 관련이 있다고 생각합니다).
그렇다면이 경우 어떻게 그룹을 제거 할 수 있습니까?
내가 생각 해낼 수있는 유일한 방법은 그룹의 모든 사용자를로드 한 다음 모든 사용자에 대해 그룹에서 현재 그룹을 제거하고 사용자를 업데이트하는 것입니다. 그러나이 그룹을 삭제할 수 있도록 그룹의 모든 사용자에 대해 update ()를 호출하는 것은 우스꽝스러운 것 같습니다.