HQL语言如何在代码中加入查询两个表
HQL language how to join query two tables like in code
我有三个表:
经理
公司经理
公司
一对多
我需要找没有公司的经理,在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 中我们有 ids: 2 3 4
//例如在allManagers中我们有ids: 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);
});
使用SQL:
select m.id
from Manager m
where not exists (SELECT * FROM ManagersCompany mc
WHERE m.id = mc.idManager)
我有三个表:
经理
公司经理
公司
一对多
我需要找没有公司的经理,在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 中我们有 ids: 2 3 4
//例如在allManagers中我们有ids: 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);
});
使用SQL:
select m.id
from Manager m
where not exists (SELECT * FROM ManagersCompany mc
WHERE m.id = mc.idManager)