Hallo,
ich hab irgendwie schon einen Knoten im Kopf, deshalb muss ich jetzt mein Problem mal hier schildern.
Also, ich habe 3 Tabellen:
UnmodifiedText
Paragraph
Verknüpfungstabelle für die beiden, weil diese eine many-to-many-Beziehung haben)
folgendermaßen soll die Kaskadierung sein:
Wenn ich einen UnmodifiedText lösche, soll natürlich der Eintrag aus Verknüpfungstabelle gelöscht werden und wenn dieser Eintrag gelöscht wird, soll der entsprechende Paragraph gelöscht werden, wenn es für diesen keinen Eintrag mehr in der Verknüpfungstabelle gibt.
Ich dachte, dass das mit DELETE_ORPHAN funktionieren sollte. Vielleicht tuts das auch, aber ich kriegs nicht hin oder habe ich DELETE_ORPHAN falsch verstanden?
Folgendermaßen sehen meine Beziehungsdefinitionen aus:
in UnmodifiedText:
in Paragraph:
in UnmodifiedText_Paragraph: (Verknüpfungstabelle)
Wenn ich das so versuche auszuführen, dann kommt beim Löschen eines UnmodifiedText folgender Fehler:
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
...
Caused by: java.sql.BatchUpdateException: ORA-02292: Integritäts-Constraint (TEST_LOCAL.FK7D8059DE56669858) verletzt - untergeordneter Datensatz gefunden
Ich denke, dass er versucht, einen Paragraph zu löschen, der aber noch einen Verweis in der Verknüpfungstabelle hat. Dass das nicht geht, is ja logisch, aber das soll er ja auch gar nicht.
Ich hoffe, irgendjemand hat verstanden was ich will und kann mir vielleicht helfen!
Danke, GG
ich hab irgendwie schon einen Knoten im Kopf, deshalb muss ich jetzt mein Problem mal hier schildern.
Also, ich habe 3 Tabellen:
UnmodifiedText
Paragraph
Verknüpfungstabelle für die beiden, weil diese eine many-to-many-Beziehung haben)
folgendermaßen soll die Kaskadierung sein:
Wenn ich einen UnmodifiedText lösche, soll natürlich der Eintrag aus Verknüpfungstabelle gelöscht werden und wenn dieser Eintrag gelöscht wird, soll der entsprechende Paragraph gelöscht werden, wenn es für diesen keinen Eintrag mehr in der Verknüpfungstabelle gibt.
Ich dachte, dass das mit DELETE_ORPHAN funktionieren sollte. Vielleicht tuts das auch, aber ich kriegs nicht hin oder habe ich DELETE_ORPHAN falsch verstanden?
Folgendermaßen sehen meine Beziehungsdefinitionen aus:
in UnmodifiedText:
Code:
@OneToMany(mappedBy = "unmodifiedText", fetch=FetchType.EAGER)
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE)
rivate Set<UnmodifiedText_Paragraph> utp = new HashSet<UnmodifiedText_Paragraph>();
Code:
@OneToMany(mappedBy = "paragraph", fetch = FetchType.EAGER)
private Set<UnmodifiedText_Paragraph> utp = new HashSet<UnmodifiedText_Paragraph>();
Code:
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "unmodifiedText",insertable = false, updatable = false)
private UnmodifiedText unmodifiedText;
@ManyToOne
@JoinColumn(name = "paragraph",insertable = false, updatable = false)
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Paragraph paragraph;
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
...
Caused by: java.sql.BatchUpdateException: ORA-02292: Integritäts-Constraint (TEST_LOCAL.FK7D8059DE56669858) verletzt - untergeordneter Datensatz gefunden
Ich denke, dass er versucht, einen Paragraph zu löschen, der aber noch einen Verweis in der Verknüpfungstabelle hat. Dass das nicht geht, is ja logisch, aber das soll er ja auch gar nicht.
Ich hoffe, irgendjemand hat verstanden was ich will und kann mir vielleicht helfen!
Danke, GG