2012-07-16 9 views
5

Qui di seguito sono le query HQL per specifico tipo di classiNHibernate .class equivalente 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 

im chiedevo c'è e equivalente utilizzando QueryOver?

+0

forse c'è ma nel frattempo puoi sempre '.Where (Projections.eq (" classe ", ...)' – Firo

risposta

5

È possibile utilizzare GetType con il metodo di estensione IsIn QueryOver per raggiungere questo obiettivo:

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

si consiglia di utilizzare i valori di discriminatore che la mappatura NHibernate utilizza.

+0

non ha funzionato btw il motivo per cui voglio farlo è perché voglio risolvere un problema dichiarato in questa discussione http://stackoverflow.com/questions/11491592/nhibernate-return-a-specific-type-of-union-subclass-in-a-queryover-with-join – reggieboyYEAH

+0

Puoi espandere "it didn" t lavoro? "Che aspetto ha l'SQL generato? Hai ricevuto un errore? –

+0

Mi dispiace, in pratica quello che succede è che mi sono unito a TType1 in TType2 in un QueryOver è che non è possibile eseguire la query non è in grado di risolvere il tipo di join – reggieboyYEAH