JPQL 不在 id 列表中

JPQL NOT IN id list

我有 class A 和 class B。

class A {
    List<B> bs;
}

class B {
    Integer id;
}

我必须编写 JPQL 查询,它将 select 全部为,除了 B 和一些 id;

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

@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)

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