我在 Task 和 TaskError 之间有一个简单的 OneToMany 关系。
任务映射 TaskErrors:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "task", orphanRemoval = true)
private List<TaskError> taskErrorCollection;
TaskErrors 应该在任务被删除时被删除,因此 orphanRemoval。
TaskError 连接到一个任务:
@JoinColumn(name = "task_id", referencedColumnName = "id")
@ManyToOne(optional = false, cascade = CascadeType.ALL)
private Task task;
当我使用以下代码添加 TaskError 时,Task 中的 TaskErrors 列表未更新:
TaskError taskError;
// set all taskErrors vars
taskErrorDAO.create(taskError);
因此,数据库包含 TaskError 的一行,而 Task 中的 TaskErrors 列表未填充。显然,当我删除任务时,它给出了一个错误: MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row
我个人是否需要在 Task 中填充 TaskError 列表?有没有办法让这个列表自动填充?taskErrorDAO.create(taskError) 之后的 em.flush 没有帮助。