2012-07-16 24 views
5

a continuación son para consultas HQL tipo específico de clasesNhibernate .class equivalente en 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 

estoy preguntando es allí y equivalente utilizando QueryOver?

+0

tal vez, pero mientras tanto, siempre puede '.Where (Projections.eq (" clase ", ...)' – Firo

Respuesta

5

Puede utilizar GetType con el método de extensión IsIn QueryOver de lograr esto:

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

usted debe utilizar los valores discriminadores que utiliza su mapeo de NHibernate.

+0

no funcionó por cierto, la razón por la que quiero hacer esto es porque quiero resolver un problema declarado en este hilo http://stackoverflow.com/questions/11491592/nhibernate-return-a-specific-type-of-union-subclass-in-a-queryover-with-join – reggieboyYEAH

+0

¿Puede ampliar en "didn ' ¿Funcionó? "¿Cómo era el SQL generado? ¿Recibió un error? –

+0

Disculpe, básicamente lo que sucede es que me uní a TType1 a TType2 en un QueryOver es que no puede ejecutar la consulta no puede resolver el tipo que se está uniendo. – reggieboyYEAH

Cuestiones relacionadas