Search code examples
nhibernateicriteria

ICriteria Restriction on Expression


How should be written the following query with the NHibernate's ICriteria API:

DetachedCriteria criteria = DetachedCriteria.For<Order>()
    .Add(Restrictions.Eq("Property1 + Property2", confirmation.Ammount));

What I need is to compare an expression (Property1 + Property2) to given value (confirmation.Ammount).

I'm using NHibernate 2.0 (I can't switch to newer version at the moment).

Thanks


Solution

  • option 1

    .Add(Expression.Sql("(Property1 + Property2) = ?", confirmation.Ammount, NHibernateUtil.Int32));
    

    option 2

    writing your own Projection see here

    .Add(Restrictions.Eq(new ArithmeticOperatorProjection(
        "+", NHibernateUtil.Int32, Projections.Property("Property1"), Projections.Property("Property2")
        )
    )