Hibernate много-к-одному аннотация и ошибка при удалении - PullRequest
1 голос
/ 10 февраля 2011

У меня есть этот 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.

Если я выполню удаление одного из этих bean-компонентов, у которого свойство prodottoDiRiferimento имеет значение null, а другие 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, также будут удалены.

Как это сделать?

1 Ответ

1 голос
/ 31 июля 2014

Есть ли у вас обратные отношения @OneToMany, объявленные как

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

Если вы делаете все, что вам нужно, это удалить родителя, и все дети должны быть удалены.

...