Oracle mit Eclipse tun:Eclipselink: Probleme mit Kaskade löschen Update statt
ich eine Eins-zu-Beziehung zwischen einem Elternteil (Workflow) haben und Kinder (Bühne). In der Datenbank habe ich eine Löschbedingung, die in der Workflow-Löschstufe gelöscht wird. Dies funktioniert gut von sqlplus.
class Workflow {
@Override
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "workflow", targetEntity = Stage.class)
@JoinColumn(name = "WORKFLOW_ID")
public Set<Stage> getStages() {
return m_stages;
}
}
class Stage {
@Override
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false, targetEntity = Workflow.class)
@JoinColumn(name = "WORKFLOW_ID", nullable = false)
public Workflow getWorkflow() {
return m_workflow;
}
}
wenn i laden den Arbeitsablauf von Namen innerhalb einer @Transactional (Propagation = Propagation.REQUIRED) -Methode und dann em.remove (Workflow), dass das Objekt,
I Ausnahmen erhalten, wie
Error Code: 1407
Call: UPDATE STAGES SET WORKFLOW_ID = ?, FAILURE_STAGE_ID = ?, SUCCESS_STAGE_ID = ? WHERE (STAGE_ID = ?)
bind => [4 parameters bound]
Caused by: java.sql.SQLException: ORA-01407: cannot update ("DB"."STAGES"."WORKFLOW_ID") to NULL
weil ich die stages.workflow_id -Spalte definiert habe, um nicht nullbar zu sein.
Warum versucht Eclipselink, die Stages-Tabelle mit Null-Workflow-IDs zu aktualisieren, anstatt nur die Stage-Zeile selbst zu löschen?
Wie behebe ich das?
@ManyToOne keinen mappedBy Attribut – MeBigFatGuy