Ich habe einige Suche nach diesem und nichts ergab. Ist es möglich, eine Hibernate-Abfrage zu erstellen, um eine Gruppe von Objekten basierend auf einem Diskriminator zurückzugeben?Abfrage nach Diskriminator in NHibernate
Ich habe eine AbstractUser-Klasse, die um die konkreten Klassen UserTypeA und UserTypeB erweitert wird. Ich verwende das Tabelle-pro-Hierarchie-Modell, um meine Klassen in NHibernate zuzuordnen. Daher werden UserTypeA und UserTypeB in derselben Tabelle mit unterschiedlichen Diskriminatorwerten gespeichert. Hier ist meine Scheidungszuordnungseigenschaft:
<discriminator column="Type" type="string"/>
ich eine Spalte in meinem Tisch haben, die den Namen des Benutzers Typ enthält. Ich frage mich, ob es möglich ist, eine NHibernate-Abfrage mit diesem auszuführen.
Ich versuchte dies:
public IList<DomainBase> FindByType(string typeName, Type type)
{
string query = "from " + type.Name + " k where k.Type = " + typeName;
return Session.CreateQuery(query).List<DomainBase>();
}
Aber da Art nicht eigentlich eine Eigenschaft der Klasse ist, nur eine Spalte in der Tabelle, dies offensichtlich nicht funktioniert. Es erscheint überflüssig, sowohl eine Eigenschaft für diesen Zweck als auch einen Diskriminator zu haben, es sei denn, es gibt eine Möglichkeit, eine Eigenschaft als Diskriminator zu verwenden.
Ist dies mit der Kriterien-API möglich? – joniba
@joniba Ich glaube es ist. –