我有三张桌子:
经理
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);
});
答案 0 :(得分:1)
使用SQL:
select m.id
from Manager m
where not exists (SELECT * FROM ManagersCompany mc
WHERE m.id = mc.idManager)