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 属性设置为 null 并且其他 bean 具有 prodottoDiRiferimento 属性的 bean,我会得到:

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`))

我想要的是所有指向已删除的具有 prodottoDiRiferimento 属性的 bean 也将被删除。

怎么做?

4

1 回答 1

1

您是否将反向 @OneToMany 关系声明为

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

如果你做了所有你应该做的就是删除父母,孩子都应该被删除。

于 2014-07-30T20:15:22.943 回答