Hibernate HQL中的有效存在性查询

Hibernate HQL中的有效存在性查询,hibernate,hql,Hibernate,Hql,我有一个类Employee,有三个类成员:id、isVisible、sectionId 我想在HQL中查询: 如果某个部门有任何员工 如果是-该部分内的所有员工是否都隐藏 现在我正在做一些类似的事情: SELECT count(e.id), count(nullif(e.isVisible,0)) from Employee e where sectionId = :sectionId 但是计数效率不高,因为它需要一个完整的表扫描,而我不需要计数的数字 我可以做两个查询 通过

我有一个类
Employee
,有三个类成员:id、isVisible、sectionId

我想在HQL中查询:

  • 如果某个部门有任何员工
  • 如果是-该部分内的所有员工是否都隐藏
  • 现在我正在做一些类似的事情:

    SELECT count(e.id), count(nullif(e.isVisible,0)) 
            from Employee e where sectionId = :sectionId
    
    但是计数效率不高,因为它需要一个完整的表扫描,而我不需要计数的数字

    我可以做两个查询

    通过运行简单的select并将结果数限制为单个结果来查询员工部分:

    SELECT e.id from Employee e where sectionId = :sectionId
    
    如果返回结果,则在可见部分中查询第一个员工:

    SELECT e.id from Employee e where visible = 1 and sectionId = :sectionId
    

    我的问题是:我可以在一个查询中同时执行这两个检查吗?

    因为您只想从每个查询中获取一行,所以可以将它们完全外部联接,以获取包含两列的单行。您需要将Employee别名为E1和E2。

    因为您只想从每个查询中获取一行,所以可以将它们完全外部联接,以获取包含两列的单行。您需要将员工别名为E1和E2。

    如果条件为:1,您将如何区分结果。对,错2。false,false这两种情况都符合您的期望吗?如果条件为:1,您将如何区分结果。对,错2。false,false两者都符合你的期望吗?