2017-08-15 55 views
1

连接查询两个表像我有三个表:
经理
CompanyManager
公司
一对多HQL语言如何在代码

我需要让管理者没有公司,在Java代码我可以解释:

List<Long> managersWithCompany = (List<Long>) session.createQuery("Select distinct mc.idManager from ManagersCompany mc").list(); 
List<Long> allManagers = (List<Long>) session.createQuery("select m.id from Manager m"). 

//例如managersWithCompany我们有ID: 2 3 4
//例如在所有管理员我们有ID:1 2 3 4 5
那么,如何创建查询,那会给我1 5?
再次,我需要管理者,没有公司
其在Java上的代码,我只需要查询没有代码,有人知道?

 ArrayList<Long> answer = new ArrayList<>(); 
     allManagers.forEach(actMan -> { 
     boolean add = true; 
     for (Long allManager : managersWithCompany) { 
       if (actMan.equals(allManager)) { 
        add = false; 
       break; 
      } 
      } 
      if (add) answer.add(actMan); 
     }); 

回答

1

使用SQL:

select m.id 
from Manager m 
where not exists (SELECT * FROM ManagersCompany mc 
        WHERE m.id = mc.idManager) 
+1

你是最棒的!正确! 谢谢,伙计! 将在10分钟内接受您的答案 –