C# 简单HQL语句无法执行查询

C# 简单HQL语句无法执行查询,c#,nhibernate,hql,C#,Nhibernate,Hql,我是NHibernate和HQL的新手,但是我试图执行一个HQL语句,但是我得到了以下错误 An exception of type 'NHibernate.Exceptions.GenericADOException' occurred in NHibernate.dll but was not handled in user code Additional information: Could not execute query[SQL: SQL not available] 有人能帮我

我是NHibernate和HQL的新手,但是我试图执行一个HQL语句,但是我得到了以下错误

An exception of type 'NHibernate.Exceptions.GenericADOException' occurred in NHibernate.dll but was not handled in user code

Additional information: Could not execute query[SQL: SQL not available]
有人能帮我找到我犯了什么错误吗

代码

var valoresAgregadosAnoAtual2 = _repositorio.GetReceitas2<ReceitaGeral>(
    "SELECT MONTH(p.DateHourDataCreation), SUM(p.Value) " +
    "FROM Receita p " +
    "WHERE YEAR(p.DateHourDataCreation) = YEAR(GETDATE()) " +
    "GROUP BY MONTH(p.DateHourDataCreation) " +
    "ORDER BY MONTH(p.DateHourDataCreation)");

public class ReceitaGeral
{
    [Required]
    public virtual int MonthNumber { get; set; }

    [Required]
    public virtual double ValueMonth { get; set; }
}

public IEnumerable<T> GetReceitas2<T>(string sql)
{
    var context = new NHibernateHelper();
    var receitas = context.ConsultaHql<T>(sql);
    return receitas;
}

public IList<T> ConsultaHql<T>(string sqlQuery)
{
    ISession session = GetSession();
    IQuery query = session.CreateQuery(sqlQuery);
    return query.List<T>();
}
我运行了NHibernate生成的SQL语句,它在SQL Server中运行良好

更新

var valoresAgregadosAnoAtual2 = _repositorio.GetReceitas2<ReceitaGeral>(
    "SELECT MONTH(p.DateHourDataCreation), SUM(p.Value) " +
    "FROM Receita p " +
    "WHERE YEAR(p.DateHourDataCreation) = YEAR(GETDATE()) " +
    "GROUP BY MONTH(p.DateHourDataCreation) " +
    "ORDER BY MONTH(p.DateHourDataCreation)");

public class ReceitaGeral
{
    [Required]
    public virtual int MonthNumber { get; set; }

    [Required]
    public virtual double ValueMonth { get; set; }
}

public IEnumerable<T> GetReceitas2<T>(string sql)
{
    var context = new NHibernateHelper();
    var receitas = context.ConsultaHql<T>(sql);
    return receitas;
}

public IList<T> ConsultaHql<T>(string sqlQuery)
{
    ISession session = GetSession();
    IQuery query = session.CreateQuery(sqlQuery);
    return query.List<T>();
}
下图显示查询返回2个值,我认为它应该返回对我的类ReceitGeral的引用。我怎么做

如果我从Receita中放入一个HQL语句,如
,它将返回对Receita类的引用,现在我想要一个对ReceitaGeral的引用


您就快到了,只需要结果转换器和每个列的正确别名

别名(请参见
作为MonthNumber
作为ValueMonth
):


ReceitaGeral
是一个映射类还是一个用于返回查询结果的类?只是一个用于返回查询结果的类。映射的是Receita。
var valoresAgregadosAnoAtual2 = _repositorio.GetReceitas2<ReceitaGeral>(
    "SELECT MONTH(p.DateHourDataCreation) AS MonthNumber, SUM(p.Value) AS ValueMonth" +
    "FROM Receita p " +
    "WHERE YEAR(p.DateHourDataCreation) = YEAR(GETDATE()) " +
    "GROUP BY MONTH(p.DateHourDataCreation) " +
    "ORDER BY MONTH(p.DateHourDataCreation)");
public IList<T> ConsultaHql<T>(string sqlQuery)
{
    ISession session = GetSession();
    IQuery query = session.CreateQuery(sqlQuery);
    return query
       .SetResultTransformer(Transformers.AliasToBean<T>()) // e.g. T is ReceitaGeral
       .List<T>();
}