JPQL 不在 ID 列表中



我有A类和B类。

class A {
    List<B> bs;
}
class B {
    Integer id;
}

我必须编写 JPQL 查询,该查询将选择所有 as,除了具有带有某些 id 的 B;

我正在尝试执行以下操作:

@Query("FROM A a INNER JOIN a.bs b WHERE b NOT IN (FROM B WHERE id = :bId)")

@Query("FROM A a INNER JOIN a.bs b WITH b.id != :bId")

但这对我不起作用。

你可以试试:

SELECT a FROM A a
WHERE NOT EXISTS (SELECT b FROM a.bs b WHERE b.id=:bId)

你可以这样做

SELECT a FROM A a WHERE ((SELECT b FROM B b WHERE b.id=:param) NOT MEMBER OF a.bs OR (SELECT b FROM B b WHERE b.id=:param)IS NULL)

这是解决问题的一种非常简单的方法。实际上,我们选择 A 中的所有元素(这里我们查找 id 为 "param" 的 b,并确保找到的元素不在 a.bs 中)这里的"OR"也很重要,因为当 id 没有 b 时,必须选择 A 中的元素,而 or 的第一部分不足以做到这一点。

最新更新