Nhibernate HQL在查询中的位置
我试图返回一个SimpleQuery列表,该列表查询单个表并在中使用。 我可以用它来工作Nhibernate HQL在查询中的位置,nhibernate,hql,castle-activerecord,Nhibernate,Hql,Castle Activerecord,我试图返回一个SimpleQuery列表,该列表查询单个表并在中使用。 我可以用它来工作 return new List<Jobs>( ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids)) ); 返回新列表( ActiveRecordMediator.FindAll(表达式.In(“ServiceId”,id)) ); 然而这真的很慢。所以我想做一些像这样的事情 SimpleQu
return new List<Jobs>(
ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids))
);
返回新列表(
ActiveRecordMediator.FindAll(表达式.In(“ServiceId”,id))
);
然而这真的很慢。所以我想做一些像这样的事情
SimpleQuery<Job> query =
new SimpleQuery<Job>(@"from Job as j where ? in (j.ServiceId)", ids);
return new List<Job>(query.Execute());
SimpleQuery=
新的SimpleQuery(@“从作业中作为j where?in(j.ServiceId)”,id);
返回新列表(query.Execute());
然而,我不能让简单的工作。我找不到任何有关这方面的文件,希望有人能提供帮助
谢谢请查看NHibernate HQL文档 我从您的代码猜测,您正在执行HQL查询,以返回所有作业,其中job.ServiceID位于ID列表中 也许是这样的
IQuery q = s.CreateQuery("from Job as j where j.ServiceId in (:serviceIds)");
q.SetParameterList("serviceIds", ids);
顺便说一句,你听说过这个项目吗?
下面是使用上述库完成的IN查询的示例。作为使用HQL的一种替代方案,这可能是一件有趣的事情
DetachedCriteria after =
DetachedCriteria.For<Person>()
.Add(SqlExpression.In<Person>(p => p.Name,
new string[] { "name1", "name2", "name3" }));
DetachedCriteria之后=
DetachedCriteria.For()
.Add(SqlExpression.In)(p=>p.Name,
新字符串[]{“name1”、“name2”、“name3”});
谢谢您的回复。我根据您的回复编辑了我的查询SimpleQuery=new SimpleQuery(@“from Job as j,其中j.SecondName=(:name)和(:ServiceId)”中的ServiceId);SetParameter(“serviceIds”,ids);query.SetParameter(“name”,name);返回新列表(query.Execute());现在唯一的问题是我传递的ID的int数组。数据库中的字段是int类型,如果我在任何字符串字段上使用in,它工作正常,如果我传递一个int值,它工作正常。如何传递数组?谢谢,这可能对你也有用