Если у меня есть 3 объекта:
@ Публичный класс сущности Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected Long id;
private String name;
}
@ Entity @Inheritance (стратегии = InheritanceType.ПРИСОЕДИНЕНО) открытый класс Course {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected Long id;
@OneToMany
private List<Student> students;
private String name;
}
@ Entity @Inheritance (стратегии = InheritanceType.JOINED) открытый класс Группа {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected Long id;
@OneToMany
private List<Student> students;
private String name;
}
Как я могу удалить учеников с помощью запроса JPQL?
Я пытаюсь
УДАЛИТЬ ИЗ СЛУЖЕБА С ГДЕ s.name = "John Doe"
Но у меня есть
Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется (database
, CONSTRAINT FK_course_student_students_ID
FOREIGN KEY (students_ID
) ССЫЛКИ student
(ID
))
Мне нужно сделать это в чистом JPQL для производительности, я не могу сделать entity.remove, потому что у меня есть 10000 Джона Доу, и мне нужно удалить их за секунду.
Почему JPQL не говорит: «Эй, давайте удалим этого Джона Доу из этого курса биологии, он не существует» вместо «Эй, курс биологии настолько важен, что ни один студент не можетНельзя удалить из этого курса!"
Чего мне не хватает и какую аннотацию мне нужно использовать?
Спасибо!
Редактировать: добавление @JoinColumn в отношение OnToMany может работать, если толькостуденты ссылаются на разные таблицы ...