さらに別の多対多の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>();
私が今やりたいのは、可能な限り最も簡単な方法で両方のテーブルを空にすることです。私はフォローしようとしています(emは私のentityManagerです)。
em.createQuery("delete from StrategyGroup sg").executeUpdate();
em.createQuery("delete from Strategy s").executeUpdate();
これにより、@joinTableの制約違反が発生します。一方、em.remove(strategyGroup);
tiで削除すると正常に機能します。戦略グループが削除され、@joinTableが正しく更新されます。
では、どうすればテーブルを空にできますか?オブジェクトをロードして1つずつ削除する必要がありますか?
手伝ってくれてありがとう。