[英]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.