HQL:如何使不存在查询?

时间:2014-05-26 22:26:16

标签: java hibernate java-ee jpa hql

我在“utilisateur”和“projet”之间有一个ManyToMany关系 我想提取项目实体中不存在的所有用户 那么这是我的疑问:

Query req=utilisateurDAO.createQuery("select u from utilisateur u where not in(select p from projet p where p.utilisateurs.iduser=u.iduser) ");

这是“Projet”实体:

        @Entity
        public class Projet implements Serializable {
             @Column(name = "idprojet", nullable = false)
             @Id
             @GeneratedValue(strategy=GenerationType.IDENTITY)  
             Integer idprojet;
             @ManyToMany(mappedBy="projets", fetch = FetchType.LAZY)
             java.util.List<com.gestion.projet.domain.Utilisateur> utilisateurs;
    }

这就是“Utilisateur”实体

 @Entity
        public class Utilisateur implements Serializable {
             @Column(name = "iduser", nullable = false)
             @Id
             @GeneratedValue(strategy=GenerationType.IDENTITY)  
             Integer iduser;

@ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(schema = "public", name = "join_membre_projet", joinColumns = { @JoinColumn(name = "iduser", referencedColumnName = "iduser", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "idprojet", referencedColumnName = "idprojet", nullable = false, updatable = false) })
    java.util.List<com.gestion.projet.domain.Projet> projets;
}

我不知道为什么不起作用?

1 个答案:

答案 0 :(得分:0)

HQL支持sub selects以及收集exepressions。

项目实体中不存在的所有用户表示没有分配项目的所有用户或具有空项目列表的用户:

select u from Utilisateur where u.projets is empty