Java-用于删除oneToMany关系的JPQL查询

Java-用于删除oneToMany关系的JPQL查询,java,orm,jpa,persistence,jpql,Java,Orm,Jpa,Persistence,Jpql,如果我有这3个实体: @实体 公立班学生{ @Id @GeneratedValue(strategy=GenerationType.IDENTITY) protected Long id; private String name; } @实体 @继承(策略=InheritanceType.JOINED) 公共课{ @Id @GeneratedValue(strategy=GenerationType.IDENTITY) protected Long id; @OneToMany priv

如果我有这3个实体:

@实体 公立班学生{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected Long id;

private String name; 
}

@实体 @继承(策略=InheritanceType.JOINED) 公共课{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected Long id;

@OneToMany
private List<Student> students;

private String name; 
@Id
@GeneratedValue(策略=GenerationType.IDENTITY)
保护长id;
@独身癖
私人名单学生;
私有字符串名称;
}

@实体 @继承(策略=InheritanceType.JOINED) 公共课组{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
protected Long id;

@OneToMany
private List<Student> students;

private String name; 
@Id
@GeneratedValue(策略=GenerationType.IDENTITY)
保护长id;
@独身癖
私人名单学生;
私有字符串名称;
}

如何使用JPQL查询删除学生

我试着

从学生名单中删除 其中s.name=“John Doe”

但我有

无法删除或更新父行:外键约束失败(
database
,constraint
FK\u course\u student\u student\u ID
外键(
student\u ID
)引用
student
ID

为了提高性能,我需要在纯JPQL中执行此操作,我不能执行entity.remove,因为我有10000个John doe,我需要在一秒钟内删除它们

为什么JPQL不说:“嘿,让我们把这个约翰·多伊从这门生物课上删除,他不存在”而不是“嘿,生物课非常重要,没有学生可以从这门课上删除!”

我缺少什么,我必须使用什么样的注释

谢谢


编辑:向OnToMany关系添加@JoinColumn可能有效,除非学生被不同的表引用…

默认情况下,单向一对多关系通过join表映射。如果您对使用join talbe没有任何特殊要求,您可以在
Student
中使用外键,其配置如下:

@OneToMany 
@JoinColumn
private List<Student> students; 
@OneToMany
@连接柱
私人名单学生;

它还可以解决约束冲突问题。

有时,您可以使用“全部更新”查询清除对“全部删除”中删除的对象的引用


您还可以将数据库上的约束配置为级联或删除时为空,以避免约束问题。

谢谢,它解决了原始问题的问题,但我现在有另一个问题,事实上,我有多个表引用学生实体,因此学生无法存储关系,我需要多重关系表。