ManyToOne级联不起作用



In Play Framework!我定义了两个模型:

一方面,

@Entity
public class DashboardPosition extends Model  {
    public int orderId;
    @ManyToOne(cascade=CascadeType.ALL)
    public Dashboard dashboard;
}

另一方面,

@Entity
public class Dashboard extends Model  {
    ...
}

由于某些原因,当通过"dashboard.delete()"删除仪表板时我得到一个错误与以下日志。

12:07:20,190 DEBUG ~ delete from Dashboard where id=?
12:07:20,204 WARN  ~ SQL Error: 23003, SQLState: 23003
12:07:20,204 ERROR ~ Referential integrity constraint violation: "FKF7C253BD5A49DA96: PUBLIC.DASHBOARDPOSITION FOREIGN KEY(DASHBOARD_ID) REFERENCES PUBLIC.DASHBOARD(ID)"; SQL statement:
delete from Dashboard where id=? [23003-149]
12:07:20,204 WARN  ~ SQL Error: 23003, SQLState: 23003
12:07:20,204 ERROR ~ Referential integrity constraint violation: "FKF7C253BD5A49DA96: PUBLIC.DASHBOARDPOSITION FOREIGN KEY(DASHBOARD_ID) REFERENCES PUBLIC.DASHBOARD(ID)"; SQL statement:
delete from Dashboard where id=? [23003-149]

这让我觉得级联在我的情况下不起作用。任何线索,为什么这可能会发生/如何调试这个问题?

级联位于关联的错误一侧。

您希望在删除仪表板时删除所有仪表板的位置。但是您不希望在删除仪表板的一个位置时删除它。因此,级联应该设置在Dashboard的positions字段的@OneToMany注释上。

最新更新