将条件查询与休眠一起使用时,如何将条件"或者"在一起?
时间:2020-03-05 18:51:46 来源:igfitidea点击:
我正在尝试使用休眠条件查询在三个字段上执行基本的"或者"操作。
例子
class Whatever{ string name; string address; string phoneNumber; }
我想建立一个条件查询,其中我的搜索字符串可以匹配"名称"或者"地址"或者" phoneNumber"。
解决方案
回答
我们想使用Restrictions.disjuntion()
。像这样
session.createCriteria(Whatever.class) .add(Restrictions.disjunction() .add(Restrictions.eq("name", queryString)) .add(Restrictions.eq("address", queryString)) .add(Restrictions.eq("phoneNumber", queryString)) );
请在此处查看Hibernate文档。
回答
假设我们要进行休眠会话,则应执行以下操作:
Criteria c = session.createCriteria(Whatever.class); Disjunction or = Restrictions.disjunction(); or.add(Restrictions.eq("name",searchString)); or.add(Restrictions.eq("address",searchString)); or.add(Restrictions.eq("phoneNumber",searchString)); c.add(or);
回答
以防万一有人为NHibernate遇到同样的问题时偶然发现:
ICriteria c = session.CreateCriteria(typeof (Whatever)) .Add(Expression.Disjunction() .Add(Expression.Eq("name", searchString)) .Add(Expression.Eq("address", searchString)) .Add(Expression.Eq("phoneNumber", searchString)));