Java: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(action=OnDeleteAction.CASCADE)
private List<bTable> BTable = new ArrayList<BTable>();

现在我尝试使用批量删除查询从表 A 中删除:

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

我得到了外键约束错误。我决定像在 mysql 中一样使用连接进行删除,所以我将其更改为:

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

我遇到了语法错误。我尝试了几种有或没有加入的组合,但没有任何效果;有什么想法吗?

我使用 mysql 作为数据库,使用 java 作为语言。

最佳答案

您可以使用 native 查询,以下应该适用于 mysql:

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

关于Java:Hibernate - 查询以从多个表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301093/

相关文章:

java - GraalVM 生成的原生镜像可以替代 IKVM 生成的 DLL 吗?

java - java mysql数据库连接类中实现一个方法使用preparedStatements

mysql - 连接多个表并返回零(如果不是排在一个表中)

java - Hibernate 查询优化

java - Hibernate 不删除外键行(而是将其设置为 NULL)

java - 在 hibernate 中检索子属性时出错

java - 如何使用Jedis获取redis服务器的系统时间?

java - 我应该在 API 包中使用数据类的接口(interface)吗?

php artisan 迁移抛出 PDOException

Mysql需要很长时间才能达到更大的限制