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 の 1 つを削除し、他の Bean は 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`))

私が望むのは、prodottoDiRiferimento プロパティを持つ削除されたものを指すすべての Bean も削除されることです。

どうやってするの?

4

1 に答える 1

1

として宣言された逆の @OneToMany 関係がありますか

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

あなたがする必要があるのは、親を削除することだけであり、子はすべて削除する必要があります。

于 2014-07-30T20:15:22.943 に答える