Vermeiden NULL Objekts in HQL Abfrage where-Klausel
-
13-09-2019 - |
Frage
Ich habe eine Einheit, die eine übergeordnete Entität haben könnte. Ich möchte diese Abfrage auszuführen:
Objekt wählen, wo entity.parent.id = 9
ein Teil der Einheit nicht über Eltern (entity.parent = null) und N HIBERNATE schlägt fehl, diese Abfrage auszuführen (QueryException - lösen kann nicht Eigentum)
Wie kann ich HQL alle Einheiten zu bekommen verwenden, die Eltern Einheiten mit der ID 9, der Vermeidung diejenigen hat, dass die Mutter null ist?
(Hinzufügen entity.parent ist nicht null vor dem entity.parent.id = 9 Ergebnisse in der gleichen Ausnahme)
Es gibt eine Option eine verschachtelte SELECT-Anweisungen zu verwenden, aber ich glaube nicht, das die effizienteste Lösung ist.
Lösung
Sie fehlen in Ihrem HQL-Abfrage eine from
Klausel. Versuchen Sie es wie folgt umschreiben:
from entity where entity.parent is not null and entity.parent.id = 9
Nicht sicher, aber wahrscheinlich das entity.parent is not null
Teil ist nicht erforderlich. Ich nehme an NHibernate wird dieses Szenario behandeln.