我有这个问题:
SELECT *
FROM A a
WHERE NOT EXISTS (SELECT 1
FROM AB m
WHERE m.a_id = a.id
AND EXISTS (SELECT 1
FROM B b
WHERE m.b_id = b.id
AND b.TYPE = 'C'))
我需要在Hql中写这个。
我已经在AEntity
和BEntity
类中映射了多对多的关系,以便AEntity
有linkedBs
而BEntity
有linkedAs
}
我希望这个查询的版本更简洁。
修改
问题是我们没有表AB
的任何hibernate实体,因为它只是一个JoinTable。因此,请提供一种在不使用表AB的情况下编写此查询的方法。
答案 0 :(得分:1)
试试这个:
您可以在entityA和entityB之间使用笛卡尔积,然后在中间表中检查这对夫妇是否不存在
SELECT a
FROM entityA a, entityB b
WHERE NOT EXISTS(
SELECT 'couple'
FROM ab m
WHERE m.id = a.id AND m.id = b.id)