Search code examples
nhibernatecriteriasubquery

Write subquery in Criteria of nHibernate


I've read about subquery in Criteria, but I am still unable to grasp it properly. Here I am taking one example and if somebody can help me write that using subquery it will be great.

Lets say we have table

Employee{EmployeeId.(int),Name(string),Post(string),No_Of_years_working(int)}

Now I want all the employees who are Managers and working for less than 10 years. I know that we can get the result without using subqueries but I want to use subquery just to understand how it works in criteria.

So, how I can write Criteria using subquery to get those employees.


Solution

  • Well - the code should be something like this:

    DetachedCriteria dc = DetachedCriteria.For<Employee>()
    .Add (Subqueries.PropertyIn("EmployeeId",
         DetachedCriteria.For<Employee>()
             .SetProjection(Projections.Property("EmployeeId"))
             .Add(Restrictions.Lt("No_Of_years_working", 10))
             .Add(Restrictions.Eq("Post", "Manager"))
    );
    

    Hope this helps.