Nhibernate 如何在命名SQL查询中映射投影类

Nhibernate 如何在命名SQL查询中映射投影类,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我希望此SQL查询重新运行CustomFieldValue类,而不是对象[],但它在命名查询GetCustomFields中失败,并出现运行时异常错误 SQL查询映射: <sql-query name="GetCustomFields"> <return alias="cfv" class="STL.Model.CustomFieldValue, STL.Domain" /> SELECT cf.NAME as {cfv.Name}, c

我希望此SQL查询重新运行CustomFieldValue类,而不是对象[],但它在命名查询GetCustomFields中失败,并出现运行时异常错误

SQL查询映射:

<sql-query name="GetCustomFields">
    <return alias="cfv" class="STL.Model.CustomFieldValue, STL.Domain" />

    SELECT
    cf.NAME as {cfv.Name},
    cf.VALUE as {cfv.Name}
    ...

  </sql-query>
但是,请删除alias、class并运行如下操作:

session.GetNamedQuery("GetCustomFields")
    .SetResultTransformer(Transformers.AliasToBean(typeof(Domain.Model.CustomFieldValue)))
    .List<Domain.Model.CustomFieldValue>();

它按预期工作。有人知道映射中的错误吗?

CustomFieldValue是映射实体吗?你能把地图贴出来吗


否则,AliasToBean transformer就是最好的选择。

不,CustomFieldValue不是映射实体,它只是让SQL返回类型化结果。所以,据我所知,如果类没有映射,我就不能返回类型化的结果,对吗?@Madman:那么就使用转换器吧。那太糟糕了。谢谢你的澄清
session.GetNamedQuery("GetCustomFields")
    .SetResultTransformer(Transformers.AliasToBean(typeof(Domain.Model.CustomFieldValue)))
    .List<Domain.Model.CustomFieldValue>();