繁体   English   中英

JPQL查询多对多关系,其中联接表中不存在项

[英]JPQL query for many to many relationship where item does not exist in join table

我正在尝试构造一个JPQL查询,以仅选择组中不存在的VM。 我在虚拟机和组之间有很多关系:

类组:

 @ManyToMany(fetch = FetchType.EAGER)
 @JoinTable(
     name="group_vm",
     joinColumns={@JoinColumn(name="group_id", referencedColumnName="id")},
     inverseJoinColumns={@JoinColumn(name="vm_id", referencedColumnName="id")}
 private Set<VM> vms;

在SQL中,这相当简单:

选择* from vm,其中id不在其中(从group_vm中选择vm_id);

在JPQL中有办法吗?

使用不存在

select vm from VM vm where not exists (select 1 from Group gr where vm member of gr.vms)

NOT IN也应该起作用,但是存在可能更快

select vm from VM vm where vm not in (select gr.vms from Group gr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM