2012-07-16 10 views
5

Im Folgenden sind HQL-Abfragen für bestimmte Art von KlassenNhibernate .class- Äquivalent in QueryOver

select a from Animal a 
where TYPE(a) in ('Cat', 'Dog') 
and a.sex = 'Male' 
order by a.name 


select a from Animal a 
where a.class in ('Cat', 'Dog') 
and a.sex = 'Male' 
order by a.name 

Ich frage mich da ist und gleichwertige QueryOver mit?

+0

vielleicht gibt es aber in der Zwischenzeit können Sie immer '.Woher (Projections.eq (" Klasse ", ...)' – Firo

Antwort

5

Sie können GetType mit der IsIn QueryOver Extension-Methode verwenden, um dies zu erreichen: sollten

session.QueryOver<Animal>() 
    .Where(a => a.GetType().IsIn(new[] { "Cat", "Dog" }) 
    /* .. etc */ 

Sie die Unterscheidungswerte verwenden, die Ihr NHibernate-Mapping verwendet.

+0

es funktioniert nicht zwischendurch der Grund, ich möchte dies tun, weil ich ein Problem lösen will in diesem Thread http://stackoverflow.com/questions/11491592/nhibernate-return-a-specific-type-of-union-subclass-in-a-queryover-with-join – reggieboyYEAH

+0

Können Sie erweitern auf "es didn ' t Arbeitet? "Wie sah das generierte SQL aus? Haben Sie einen Fehler bekommen? –

+0

Entschuldigung, im Grunde, was passiert, wenn ich TType1 zu TType2 in einem QueryOver beigetreten bin, kann es die Abfrage nicht ausführen, kann den Typ, der verbunden wird, nicht auflösen. – reggieboyYEAH

Verwandte Themen