如何在NHibernate Criteria API中应用IN关键字?

时间:2014-01-06 08:36:12

标签: hibernate

您好我正在使用Criteria API,我想使用Criteria API从db中获取用户。
它工作正常,但我想写这样的查询

Select * from EMP where empName LIKE '%bhan' or empName LIKE '%HAR' AND dominid=3;

如何使用Criteria

中的NHiberbate API编写此查询

1 个答案:

答案 0 :(得分:0)

您的问题存在一些差异IN不一样,与LIKE

产生的结果不同

您可以通过以下方式将NHibernate.Criterion.ICriterion对象添加到NHibernate.ICriteria对象。

//create the criteria
ICriteria _criteria = CurrentSession.CreateCriteria<Employee>();

//create a disjunction
var disjunction = NHibernate.Criterion.Restrictions.Disjunction();

//form the disjunction
disjunction.Add(NHibernate.Criterion.Restrictions.Like("empName", "bhan", NHibernate.Criterion.MatchMode.Anywhere));
disjunction.Add(NHibernate.Criterion.Restrictions.Like("empName", "HAR", NHibernate.Criterion.MatchMode.Anywhere));

//add the disjunction to the criteria object
_criteria.Add(disjunction);

_criteria.Add(NHibernate.Criterion.Restrictions.Eq("dominid", 3));

或者您可以在条件中添加IN子句。

_criteria.Add(NHibernate.Criterion.Restrictions.In("Entity_Property", An_Array_Of_Values));