에서 하이버 네이트 일괄 삭제 또 다른 다 대다 하이버 네이트 질문.다 대다 테이블
@Entity
public class Strategy implements Serializable {
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "STRATEGY_TO_GROUP", joinColumns = {@JoinColumn(name="STRATEGY_ID")}, inverseJoinColumns = {@JoinColumn(name = "STRATEGY_GROUP_ID")})
private Set<StrategyGroup> groups;
...
}
을 그리고 관계의 반대편은 다음과 같습니다 :
@Entity
public class StrategyGroup implements Serializable {
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "STRATEGY_TO_GROUP", joinColumns = {@JoinColumn(name="STRATEGY_GROUP_ID")}, inverseJoinColumns = {@JoinColumn(name = "STRATEGY_ID")})
private Set<Strategy> strategies = new HashSet<Strategy>();
는 내가 지금하고 싶은 것은 모두 테이블 비어 다음과 같이 내가 가장 간단한 다 대다 매핑이 가장 쉬운 방법. 나는 다음을 시도하고있다 (em은 나의 entityManager 임).
em.createQuery("delete from StrategyGroup sg").executeUpdate();
em.createQuery("delete from Strategy s").executeUpdate();
이렇게하면 @joinTable에 제약 조건 위반이 발생합니다. 반면에 em.remove(strategyGroup);
ti가 삭제되면 전략 그룹이 삭제되고 @joinTable이 올바르게 업데이트됩니다.
그럼 어떻게 테이블을 비우겠습니까? 개체를로드하고 하나씩 삭제해야합니까?
도움 주셔서 감사합니다.
은 Strategy, 다른 하나는 StrategyGroup 부분입니까? – Baz1nga
당신이 무엇에 관해 묻고 있는지 확실하지 않습니다 ... 전략과 전략 그룹은 두 개의 개별적인 목표입니다. –
아마도 여기 뭔가 유용한 것을 찾을 수 있습니다 - http://stackoverflow.com/questions/4566614/cascade-deleting-from-join-table-with-manytomany-annotation – Kshitij