0

私は2つのテーブルピザとトッピングを持っています、

   class pizza{
...
    @ManyToMany(targetEntity = com.pizzastudyds.db.bean.Topping.class, fetch = FetchType.EAGER)
        @JoinTable(name = "PIZZATOPPING", joinColumns = @JoinColumn(name = "PIZZAID"), inverseJoinColumns = @JoinColumn(name = "TOPPINGID"))
        public Set<Topping> getToppings() {
            return toppings;
        }
...
    } 

class toppings{
@ManyToMany(mappedBy = "toppings", targetEntity = com.pizzastudyds.db.bean.Pizza.class)
    public Set<Pizza> getPizzas() {
        return pizzas;
    }
}

この2つのクラスには、ピザのトッピングを定義するときに、多対多の関係があります。次に、ピザを削除してみますが、トッピングオブジェクトを削除するとき、およびトッピングとピザの間に関係があるかどうかを確認します。その後、トッピングを削除して、制約違反の例外を取得することができません。

関係に関係なく、ピザとトッピングの両方を別々に削除したい。結合テーブルを更新し、両側から削除したい。どうやってやるの?

実際に私が欲しいのは、ピザとトッピングを別々に削除することです。ピザを削除すると、ピザが削除されて結合テーブルが更新されます。トッピングを削除すると、結合テーブルの関係が更新されます。トッピングを削除すると、ピザが削除されたり、その逆になったりするわけではありません。

4

1 に答える 1

0
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)

これを両側に追加します。これで問題が解決することを願っています。

于 2012-05-24T16:04:26.150 に答える