Zunächst einmal klarstellen, dass ich mit Datenbanken ziemlich schlecht bin, so bitte nicht mit meinem Code bedeuten: P„where“ Einschränkungen funktionieren nicht auf HQL-Abfrage mit Join-Klausel
Ich habe ein Problem mit einer Abfrage auf Hibernate mit Join und Einschränkungen. Ich habe eine riesige Liste von Assignments
und einige von ihnen haben ein Asr
Objekt.
queryString.append("select new commons.bo.assignment.AssignmentAssociateExtract("
+ " assignment.id, assignment.contract.assignmentStatus,"
+ " assignment.contract.beginDate, assignment.contract.endDate,"
+ " assignment.contract.contractType, assignment.organizationalData.homeCountryKey,"
+ " assignment.organizationalData.hostCountryKey,"
+ " assignment.organizationalData.homeOrgUnitKey,"
+ " assignment.associate.globalIdAssociate,"
+ " assignment.associate.localIdHome,"
+ " assignment.associate.firstName,"
+ " assignment.associate.lastName)"
+ " from Assignment assignment left join assignment.asr asr"
+ " where assignment.contract.assignmentStatus.code = 5"
+ " and asr.homeAsrElegibility is not 'X'"
+ " or asr.homeAsrElegibility is null"
);
Ich erstellte diese Abfrage Schritt für Schritt. Bevor ich es ohne die Join-Klausel left join assignment.asr asr
erstellte, funktionierte es gut, aber natürlich zeigte es nicht die Assignments
, die kein Asr
Objekt hatte. Nachdem ich die Join-Klausel hinzugefügt, zeigt er nun jedes einzelne Assignment
(10.000 Datensätze, wenn diejenigen, die eine assignmentStatus = 5
haben nur 4.000 sind) mehr und die Beschränkungen wie
where assignment.contract.assignmentStatus.code = 5
nicht reflektiert im Ergebnis.
Also zusammenfassend: Ich brauche eine Liste mit allen Zuweisungen mit assignmentStatus = 5 und asr.homeAsrElegibility! = 'X'. Es muss aber auch alle Zuweisungen mit assignmentStatus = 5 enthalten, auch wenn sie kein Asr-Objekt haben.
Irgendwelche Ideen ?? Vielen Dank!
Sie haben Recht! Ich habe versucht, die 'is not 'X''-Klausel zu löschen und einfach die letzte zu verlassen und natürlich das' or'-Schlüsselwort zu löschen und es funktioniert. Vielen Dank! – Carloshf
Gern geschehen. –