2012-04-12 160 views
0

我有2個表比薩和澆頭,休眠/ JPA許多一對多

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類有多對多關係的船,當我定義的比薩配料。然後嘗試刪除我能夠做到的比薩餅,但是當我刪除頂部對象時,以及如果在頂部和披薩之間存在關係。那麼我無法刪除頂部並獲得約束視角的例外。

我想刪除兩個披薩&單獨的頂部,無論關係如何;我想更新連接表以及從雙方刪除。我怎樣才能做到這一點?

其實我想要的是刪除披薩和頂部分開即,就像我刪除披薩一樣,它會被刪除並更新連接表,當我刪除它的頂部刪除更新連接表中的關係。我不是說,如果我刪除打頂,比薩餅就會被刪除,或者是惡棍。

+0

在刪除頂部之前,您需要手動移除所有頂部比薩餅。 – 2012-04-12 20:09:32

+1

可能的重複[如何自動刪除連接表中的行,以避免ConstraintViolationException?](http://stackoverflow.com/questions/3719814/how-do-i-delete-a-row-in- a-join-table-automatically-to-avoid-a-constraintviolat) – 2012-04-12 20:11:04

+0

謝謝,我得到了你的意見 – 2012-04-12 22:21:53

回答

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

在兩側添加它。我希望這會解決你的問題。