Я пытаюсь удалить большое количество строк из MOTHER
благодаря запросу JPQL.
Класс Mother
определен следующим образом:
@Entity
@Table(name = "MOTHER")
public class Mother implements Serializable {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "mother",
orphanRemoval = true)
private List<Child> children;
}
@Entity
@Table(name = "CHILD")
public class Child implements Serializable {
@ManyToOne
@JoinColumn(name = "MOTHER_ID")
private Mother mother;
}
Как вы можете видеть, класс Mother
имеет "детей", и при выполнении следующего запроса:
String deleteQuery = "DELETE FROM MOTHER WHERE some_condition";
entityManager.createQuery(deleteQuery).executeUpdate();
возникает исключение:
ERROR - ORA-02292: integrity constraint <constraint name> violated -
child record found
Конечно, я мог бы сначала выбрать все объекты, которые я хочу удалить, и извлечь их в список, а затем итеративно удалить все извлеченные объекты, но производительность такого решения была бы просто ужасной!
Так есть ли способ воспользоваться преимуществами предыдущего отображения для удаления всех объектов Mother
и всех Child
, связанных с ними, эффективно и без написания запросов для all детей?