簡體   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