2012-04-12 124 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) 

在两侧添加它。我希望这会解决你的问题。