java – 检查JPA中列表中是否包含ID
作者:互联网
我有一个实体,其中包含其他实体的列表.例如,它可能是具有Address实体列表的Person.地址并非特定于一个人. (它实际上是与DB中间的连接表的多对多关系)
我正在搜索,试图找到所有没有身份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然后我想要person2和person 3返回
>如果我通过地址3然后我想要person1和person 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,sql,jpa,named-query 来源: https://codeday.me/bug/20190901/1786287.html