If I have this 3 entities :
@Entity public class Student {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) protected Long id; private String name;}
@Entity @Inheritance(strategy=InheritanceType.JOINED) public class Course {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) protected Long id; @OneToMany private List<Student> students; private String name;}
@Entity @Inheritance(strategy=InheritanceType.JOINED) public class Group {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) protected Long id; @OneToMany private List<Student> students; private String name;}
How can I delete students with a JPQL query ?
I try
DELETE FROM Student s WHERE s.name = "John Doe"
But I have
Cannot delete or update a parent row: a foreign key constraint fails (database, CONSTRAINT FK_course_student_students_ID FOREIGN KEY (students_ID) REFERENCES student (ID))
I need to do this in pure JPQL for performance, I can't do an entity.remove, because I have 10000 John doe and I need to delete them in a second.
Why JPQL doesn't say : "Hey, let's remove this john doe from this biology course, he doesn't exist" instead of "Hey, the biology course is so important that no student can be remove from this course ! "
What I am missing and what sort of annotation I have to use ?
Thanks !
Edit : Add a @JoinColumn to the OnToMany relationship could work, unless the students are referenced by different tables...