2009-10-06 5 views
3

Question JPA/JPQL simple. J'ai une entité avec une relation de ManyToMany:JPQL pour les entités sans éléments dans ManyToMany Relation

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

Quelle est la requête JPQL pour renvoyer tous les employés qui ne disposent pas des projets?

Répondre

5
from Employee e where not exists elements(e.projects) 

ou

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

Hmmmm. Je reçois une erreur avec le premier ("Exception Description: erreur de syntaxe l'analyse de la requête ..." en utilisant Eclipselink), mais la seconde semble fonctionner comme annoncé. – Tim

+0

Le premier est invalide JPQL ... EXISTS nécessite une sous-requête à suivre – DataNucleus

+0

@Andy - vous avez raison, 'elements()' ne semble pas être dans la spécification JPA, c'est une extension Hibernate. – ChssPly76

2

JQPL ne dispose dédié opérateur de comparaison IS [NOT] EMPTY pour la vérification est collection vide:

SELECT e FROM Employee e WHERE e.projects IS EMPTY 
Questions connexes