Il semble que la situation soit simple (mais cela ne marche pas). partie Db (EVENT_ID
est la clé étrangère FK_RR_E_CI
références de contraintes sur la table EVENT
.)Hibernate cascade remove ConstraintViolationException
|-------| |----------------|
| EVENT | 1 ------ ∞ | RECURRENT_RULE |
|-------| |----------------|
| ID | | ID |
|-------| | EVENT_ID |
|----------------|
Java partie:
@Entity
public class Event {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "event")
private Set<RecurrentRule> recurrentRules = new HashSet<>();
}
@Entity
public class RecurrentRule {
@ManyToOne
@JoinColumn(columnDefinition = "event_id")
private Event event;
}
Si je tente de supprimer objet événement se reconnectera:
could not execute statement; SQL [n/a]; constraint [MY_SCHEMA.FK_RR_E_CI];
nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
...
java.sql.SQLIntegrityConstraintViolationException: ORA-02292: integrity constraint (MY_SCHEMA.FK_RR_E_CI) violated - child record found
Les opérations
SAVE
et UPDATE
fonctionnent correctement.
Que dois-je changer dans ma correspondance pour être en mesure l'utilisation suppression en cascade? Je sais que je devrais utiliser @OnDelete(action=OnDeleteAction.CASCADE)
mais je ne comprends pas comment l'utiliser ...
S'il vous plaît voir [mcve]. Afficher le DDL réel, le contenu de la table, la sortie et la requête souhaitées. – philipxy