Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:Hibernate-从多个表中删除的查询_Java_Mysql_Hibernate - Fatal编程技术网

Java:Hibernate-从多个表中删除的查询

Java:Hibernate-从多个表中删除的查询,java,mysql,hibernate,Java,Mysql,Hibernate,我有两个表通过一个外键以一对多关系连接 在实体A中,我有以下内容: @org.hibernate.annotations.Cascade( { org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE_ORPHAN }) @OneToMany(mappedBy="monitoredFlight", fetch = FetchType.LAZY) @OnDelete

我有两个表通过一个外键以一对多关系连接

在实体A中,我有以下内容:

@org.hibernate.annotations.Cascade( {
    org.hibernate.annotations.CascadeType.ALL,
    org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
@OneToMany(mappedBy="monitoredFlight", fetch = FetchType.LAZY)
@OnDelete(action=OnDeleteAction.CASCADE)
private List<bTable> BTable = new ArrayList<BTable>();
@org.hibernate.annotations.Cascade({
org.hibernate.annotations.CascadeType.ALL,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
@OneToMany(mappedBy=“monitoredFlight”,fetch=FetchType.LAZY)
@OnDelete(action=OnDeleteAction.CASCADE)
private List BTable=new ArrayList();
现在,我尝试使用批量删除查询从表A中删除:

Query query = em.createQuery("delete from A where originDateTime<:date");

Query Query=em.createQuery(“从where originDateTime中删除您可以在delete cascade上使用参数设置一个外键,这样当它引用的键被删除时,它作为外键的所有行也会被删除。

您可以使用本机查询,在mysql中应该可以执行以下操作:

delete a , b from a inner join b on a.id=b.a_id where ...

我有那个allerady,但我想做一个大规模的删除,而不是一个接一个的删除。你是什么意思?表a中删除的每一行都会导致表B中共享外键的任何行的级联删除-因此你不会得到约束错误,相反,表B中所有外键映射的行也会被删除D
delete a , b from a inner join b on a.id=b.a_id where ...