还有另一个多对多的 Hibernate 问题。我有最简单的多对多映射,如下所示:
@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>();
我现在要做的是以最简单的方式清空两个表。我正在尝试关注(他们是我的 entityManager)。
em.createQuery("delete from StrategyGroup sg").executeUpdate();
em.createQuery("delete from Strategy s").executeUpdate();
这使我违反了@joinTable 的约束。另一方面,如果我按em.remove(strategyGroup);
ti 删除工作正常 - 策略组被删除并且 @joinTable 被正确更新。
那么如何清空表呢?我需要加载对象并一一删除吗?
感谢帮助。