Java-用于删除oneToMany关系的JPQL查询
如果我有这3个实体: @实体 公立班学生{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
@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
,constraintFK\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
@连接柱
私人名单学生;
它还可以解决约束冲突问题。有时,您可以使用“全部更新”查询清除对“全部删除”中删除的对象的引用
您还可以将数据库上的约束配置为级联或删除时为空,以避免约束问题。谢谢,它解决了原始问题的问题,但我现在有另一个问题,事实上,我有多个表引用学生实体,因此学生无法存储关系,我需要多重关系表。