【问题标题】:JPQL for Entities with No Items in ManyToMany Relationship多对多关系中没有项目的实体的 JPQL
【发布时间】:2010-12-04 10:25:25
【问题描述】:

简单的 JPA/JPQL 问题。我有一个具有多对多关系的实体:

@Entity
public class Employee {      
  @ManyToMany
  @JoinTablename="employee_project"
      joinColumns={@JoinColumn(name="employee_id"}
      inverseJoinColumns={@JoinColumn(name="project_id"})
  private List<Project> projects;

返回所有没有任何项目的员工的 JPQL 查询是什么?

【问题讨论】:

    标签: java jpa jpql


    【解决方案1】:
    from Employee e where not exists elements(e.projects)
    

    from Employee e where size(e.projects) = 0
    

    【讨论】:

    • 嗯。我收到第一个错误(“异常描述:使用 Eclipselink 解析查询的语法错误...”),但第二个似乎像宣传的那样工作。
    • 第一个是无效的 JPQL ... EXISTS 需要一个子查询来跟随
    • @Andy - 你说得对,elements() 似乎不在 JPA 规范中,它是一个 Hibernate 扩展。
    【解决方案2】:

    JQPL 确实有专门的IS [NOT] EMPTY 比较运算符来检查集合是否为空:

    SELECT e FROM Employee e WHERE e.projects IS EMPTY
    

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 2017-09-03
      • 1970-01-01
      • 2011-10-13
      • 2012-09-11
      • 1970-01-01
      • 2021-10-21
      • 2019-11-07
      相关资源
      最近更新 更多