2017-08-15 1 views
1

J'ai trois tables:
Gestionnaire
CompanyManager
Société
un à plusieurslangue HQL comment joindre Interroger deux tables comme dans le code

J'ai besoin de gestionnaires sans entreprise, en java code je peux expliquer:

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"). 

// par exemple dans managersWithCompany nous avons ids: 2 3 4
// par exemple dans allManagers nous avons des ids: 1 2 3 4 5
alors, comment créer une requête, ça va me donner 1 5?
encore, j'ai besoin de gestionnaires qui n'ont pas société
son code sur Java, j'ai besoin seulement de requête sans code, quelqu'un sait?

 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); 
     }); 

Répondre

1

Utilisation de SQL:

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

Vous êtes le meilleur! Exactement! Merci, mec! acceptera votre réponse dans 10 minutes –