Hibernate lote excluir na tabela muitos-para-muitos
ainda outras perguntas de muitos para muitos do Hibernate. Eu tenho o mapeamento muitos-para-muitos mais simples possível da seguinte maneira:
@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;
...
}
E o lado oposto da relação como segue:
@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>();
O que eu quero fazer agora é esvaziar as duas tabelas da maneira mais fácil possível. Estou tentando seguir (em é o meu entityManager).
em.createQuery("delete from StrategyGroup sg").executeUpdate();
em.createQuery("delete from Strategy s").executeUpdate();
Isso me dá violação de restrição no @joinTable. Por outro lado, se eu excluir porem.remove(strategyGroup);
ti funciona bem - o grupo de estratégias é excluído e o @joinTable é atualizado corretamente.
Então, como eu esvazio a mesa? Preciso carregar os objetos e excluí-los um por um?
Obrigado por ajuda.