NHibernate:返回已应用聚合函数的强类型列表
我希望nHibernate使用HQL从CreateQuery调用返回强类型列表 我们希望返回“MyType”的强类型列表,但希望在返回结果集之前对其应用聚合函数。不幸的是,据我所知,添加聚合字段意味着nHibernate无法将结果与“MyType”类型的签名相匹配 我们该怎么解决这个问题?下面的查询描述了我们希望从数据库返回的内容-但是“feedcount”字段影响nHibernate确定要返回的类型化列表的能力NHibernate:返回已应用聚合函数的强类型列表,nhibernate,Nhibernate,我希望nHibernate使用HQL从CreateQuery调用返回强类型列表 我们希望返回“MyType”的强类型列表,但希望在返回结果集之前对其应用聚合函数。不幸的是,据我所知,添加聚合字段意味着nHibernate无法将结果与“MyType”类型的签名相匹配 我们该怎么解决这个问题?下面的查询描述了我们希望从数据库返回的内容-但是“feedcount”字段影响nHibernate确定要返回的类型化列表的能力 select feedname, count(feedurl) as feedco
select feedname, count(feedurl) as feedcount from rsssubscriptions group by feedurl, feedname order by feedcount desc
假设resultset必须在事件序列的早期生成,以确保nHibenate可以推断每个记录实例化的正确类型
谢谢以下是您需要做的事情:
IList<MyObj> reults = Session.CreateQuery("select r.feedname as feedname, count(r.feedurl) as feedcount from rsssubscriptions r group by r.feedname")
.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(myobj)))
.List<MyObj>();
上述类型的属性名称必须与返回属性的别名相同,并且所有属性都必须是虚拟的
阅读以下文章,了解有关如何使用SetResultTransformer()方法的更多信息:
也可以将构造函数与HQL一起使用,请参见和
public class MyObj
{
public virtual long feedcount { get; set; }
public virtual string feedname { get; set; }
}