Verwenden Sie Objekttyp in HQL where-Klausel
-
21-08-2019 - |
Frage
In meinem Domain-Modell Ich habe eine abstrakte Klasse CommunicationChannelSpecification, die Kind-Klassen wie FTPChannelSpecification, EMailChannelSpecification und WebserviceChannelSpecification hat. Jetzt möchte ich eine HQL-Abfrage erstellen, die enthält eine where-Klausel, die das Ergebnis auf bestimmte Arten von Kanalspezifikationen einengt. Z.B. (In einfachem Englisch) wählen Sie alle CommunicationChannelSpecifications dass deren Typen auftreten in der Menge {FTPChannelSpecification, WebserviceChannelSpecification}.
Wie kann dies in HQL erreicht werden? Ich verwende NHibernate 2.0.1 und eine Tabelle pro Unterklasse Vererbung Mapping-Strategie ...
Danke!
Pascal
Lösung
Nicht positiv in NHibernate, aber in dem Ruhezustand, gibt es zwei spezielle Eigenschaften, die ID und Klasse immer referenziert werden. Also, für Ihren speziellen Fall, würde ich tun
from CommunicationChannelSpecifications spec where spec.class in (?)
Andere Tipps
NHibernate unterstützt die gleiche Syntax wie Hibernate in diesem Fall. Siehe hier für ein Beispiel.