我正在使用PostgreSQL 9.6和Hibernate 5.2.10并且有3个实体:
@Entity
@Table(name = "entity1")
public class Entity1 {
@Id
private long id;
@ManyToOne
@JoinColumn(name = "entity2_id")
private Table2 table2;
}
@Entity
@Table(name = "entity2")
public class Entity2 {
@Id
private long id;
@ManyToOne
@JoinColumn(name = "entity3_id")
private Table3 table3;
}
@Entity
@Table(name = "entity3")
public class Entity3 {
@Id
private long id;
}
我需要在Entity3加入Entity2过滤时删除Entity1的出现,如下所示:
em.createQuery("delete from Entity1 e where e.entity2.entity3 = :entity3")
Hibernate生成以下SQL:
delete from entity1 cross join entity2 entity2_ where entity3_id=?
问题是PostgreSQL没有识别交叉连接,我没有找到任何其他方法来做到这一点(除了使用本机查询)。
PS:在数据库中,所有表都有外键。
答案 0 :(得分:0)
现在我发现在删除查询中不可能使用连接(实际上是从EclipseLink迁移到Hibernate,在EclipseLink上它可以工作,只是在Hibernate上没有)。
Hibernate Exception on MySQL Cross Join Query