gpt4 book ai didi

java - 检查 ID 是否包含在 JPA 的列表中

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:50 25 4
gpt4 key购买 nike

我有一个包含其他实体列表的实体。例如,它可以是具有 Address 实体列表的 Person。地址不是特定于一个人的。 (其实就是多对多的关系,在DB中间有一个join表)

我正在搜索以尝试找到所有没有地址为 X 的人

(这可能没有意义,因为这个例子很简单。在我的真实世界中它确实如此:))

通过命名查询是:

SELECT p FROM Person p left join fetch p.addresses a WHERE p.addresses IS EMPTY OR a.id != :addressId

addressId 是我传入的地址的id

我的问题最好用一个例子来解释

  • 人 1 可能有地址 1 和地址 2
  • 人 2 可能有地址 2
  • 人 3 可能有地址 3

现在是想要的结果

  • 如果我传入地址 1,那么我希望返回人 2 和人 3
  • 如果我传入地址 3,那么我希望返回人 1 和人 2
  • 如果我传入地址 2,那么我希望返回人 3

目前,当我传入地址 1 时,我会返回所有三个地址。我认为这是因为人 1 也有地址 2,这意味着它通过了查询。

有谁知道我如何在列表中搜索一个 id,如果它存在于任何元素中则不返回它?

希望这是有道理的。如果没有,我可以尝试提供更多详细信息

谢谢

最佳答案

你可以只使用这个查询:

select p from Person p where not exists 
(select a from Person pe left join pe.addresses a where p = pe and a.id = ?1)

关于java - 检查 ID 是否包含在 JPA 的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com