2009-05-07 12 views
6

Tome esta consulta como un ejemplo:El uso de NHibernate para consultar con NOT IN en la cláusula WHERE

select * from publisher 
where id not in (
    select publisher_id from record 
    where year = 2008 and month = 4 
) 

Puede alguien ayudarme sobre cómo podía construir y ejecutar esta consulta usando NHibernate? Supongamos que tengo 2 clases: Publisher y Record.

Gracias

+0

utilizando criterios o HQL? –

+0

usando Criteria. Gracias – rguerreiro

+0

¿Cuál es la conexión entre editor y registro en sus clases modelo? –

Respuesta

7

Prueba esto:

DetachedCriteria c = DetachedCriteria.For<Record>() 
    .SetProjection(Projections.Property("Publisher")) 
    .Add(Restrictions.Eq("Year", 2008)) 
    .Add(Restrictions.Eq("Month", 4)); 
session.CreateCriteria(typeof(Publisher)) 
    .Add(Subqueries.PropertyNotIn("Id", c)) 
    .List();