我有两个通过一对多关系的外键连接的表。
在实体 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/