java - HQL:如何进行Not Exists查询?

标签 java hibernate jakarta-ee jpa hql

我在“utilisateur”和“projet”之间存在多对多关系 我想提取项目实体中不存在的所有用户 那么这是我的查询:

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;
}

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

最佳答案

HQL 支持 sub selects以及集合表达式。

项目实体中不存在的所有用户是指所有未分配项目的用户,或项目列表为空的用户:

select u from Utilisateur where u.projets is empty

关于java - HQL:如何进行Not Exists查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878459/

相关文章:

java - 赫尔辛基 MOOC 第 10 周练习 28 个奇怪的测试结果

java - hibernate一次插入三个表

mysql - Spring Boot JPA saveAll() 插入数据库非常慢

java - 如何在 EntityListeners 中注入(inject) EntityManager

java - IntelliJ IDEA 没有将我的 java 文件识别为可运行文件,而是想要运行类文件。关于如何修复的任何想法?

java - Spring集成和改变数据路由

Java邮件Api,无法从outlook客户端读取 ".msg attachment"

java - 选择所有在 hibernate 中不起作用的查询

jakarta-ee - 如何将war文件部署到cPanel中并删除项目名称?

java - 如何获取单独的子节点值