多对多关系中没有项目的实体的 JPQL
Posted
技术标签:
【中文标题】多对多关系中没有项目的实体的 JPQL【英文标题】:JPQL for Entities with No Items in ManyToMany Relationship 【发布时间】: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 查询是什么?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于多对多关系中没有项目的实体的 JPQL的主要内容,如果未能解决你的问题,请参考以下文章