2011-02-10 66 views
1

我有这个bean与注释(显示相关的):休眠多到一个注释和错误上删除

@Entity 
@Table(name = "Prodotti") 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
public class Prodotto { 
    int id; 
    String codice; 
    double prezzo; 
    double prezzoCanone; 
    String descrizione; 
    String note; 

    Prodotto prodottoDiRiferimento; 

... 

    @ManyToOne(cascade = CascadeType.REMOVE) 
    public Prodotto getProdottoDiRiferimento() { 
     return prodottoDiRiferimento; 
    } 

    public void setProdottoDiRiferimento(Prodotto prodottoDiRiferimento) { 
     this.prodottoDiRiferimento = prodottoDiRiferimento; 
    } 


} 

所有映射到MySQL。

如果我做了删除这些豆子具有prodottoDiRiferimento属性设置为空,而其他豆类有他们prodottoDiRiferimento之一,我得到:

java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`jacciseweb`.`prodotti`, CONSTRAINT `FKC803BB11ACD3B812` FOREIGN KEY (`prodottoDiRiferimento_ID`) REFERENCES `prodotti` (`ID`)) 

我想什么是所有的指向已删除的bean的prodottoDiRiferimento属性也会被删除。

怎么办?

回答

1

你有逆@OneToMany关系声明为

@OneToMany(mappedBy = "prodottoDiRiferimento", cascade = CascadeType.REMOVE) 

如果你做你应该需要做的是去除家长和孩子都应该被删除。