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
注释上。