【问题标题】:JPQL query for many to many relationship where item does not exist in join tableJPQL查询连接表中不存在项目的多对多关系
【发布时间】:2014-11-03 18:26:10
【问题描述】:

我正在尝试构建一个 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 中相当简单:

select * from vm where id not in (select vm_id from group_vm);

在 JPQL 中有没有办法做到这一点?

【问题讨论】:

    标签: java sql jpa many-to-many


    【解决方案1】:

    使用不存在

    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)
    

    【讨论】:

      猜你喜欢
      • 2018-10-17
      • 2020-03-26
      • 2016-02-18
      • 2021-10-21
      • 2018-07-06
      • 2013-12-28
      • 2021-12-10
      • 2017-07-03
      相关资源
      最近更新 更多