Task と TaskError の間に単純な OneToMany 関係があります。
タスクは TaskErrors をマップします。
@OneToMany(cascade = CascadeType.ALL, mappedBy = "task", orphanRemoval = true)
private List<TaskError> taskErrorCollection;
タスクが削除されたときに TaskErrors を削除する必要があるため、orphanRemoval です。
TaskError は Task に接続されています:
@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 は役に立ちません。