HQL语言如何在代码中加入查询两个表

时间:2017-08-15 09:18:15

标签: java sql hql

我有三张桌子:
经理
CompanyManager
公司
一对多

我需要让没有公司的经理,在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 个答案:

答案 0 :(得分:1)

使用SQL:

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