甲骨文使用的EclipseLink:的EclipseLink:與級聯刪除的問題做更新,而不是
我有一個到父(工作流程)之間的兒童(階段)一對多的關係。在數據庫中,我有一個刪除約束,以便刪除工作流刪除階段。這從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;
}
}
當我的名字加載工作流中的@Transactional(傳播= Propagation.REQUIRED)方法和內部然後em.remove(工作流),該對象,
我得到例外,如
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
,因爲我已經定義了stages.workflow_id列不爲空。
爲什麼EclipseLink的嘗試更新空流ID,而不是僅僅刪除階段行本身的階段表?
我該如何解決?
@ManyToOne沒有屬性的mappedBy – MeBigFatGuy 2012-04-03 15:29:35