从 nhibernate hql 返回不在映射文件中的对象

Posted

技术标签:

【中文标题】从 nhibernate hql 返回不在映射文件中的对象【英文标题】:return objects that are not in the mapping file from nhibernate hql 【发布时间】:2010-11-02 09:32:32 【问题描述】:

标题几乎说明了我正在尝试做的事情。我有选择案例的休眠 hql

select application.SubmissionDate, count(candidates)
from Application as application group by application.SubmissionDate

我想将此查询的返回值放入一个名为“CountPerDay”对象的对象(不在 nhibernate 映射文件中)

class CountPerDay 
public DateTime Date,
public int Count

nHibernate 是否有某种内置功能/方法来执行此操作?

【问题讨论】:

【参考方案1】:

您应该查看Ad-hoc mapping 的 NHibernate:

string hql = @"select application.SubmissionDate as Date, count(candidates) as Count 
               from Application as application 
               group by application.SubmissionDate";

var count = session.CreateQuery(hql)
                   .SetResultTransformer(Transformers.AliasToBean(typeof(CountPerDay)))
                   .List<CountPerDay>();

【讨论】:

谢谢!更新了代码并将 CountPerDay.Count 更改为 long 并且它可以工作。 可能值得一提的是transformation only works if you query using a native SQL query(不是HQL)。在@rebelliard 的回答中,他打电话给session.CreateQuery(hql)。这仍然会抱怨该表未映射。不过调用session.CreateSqlQuery(...) 应该可以。

以上是关于从 nhibernate hql 返回不在映射文件中的对象的主要内容,如果未能解决你的问题,请参考以下文章

如何从 NHibernate 映射文件生成“迁移”DDL?

使用NotFound.Ignore()的流畅Nhibernate映射禁用延迟加载和错误地获取数据

NHibernate 急切负载

一个NHibernate的BUG

如何在运行时从 nhibernate 映射文件生成实体类

如何在nHibernate中运行更新HQL查询?