nHibernate 命名查询不返回所有结果

Posted

技术标签:

【中文标题】nHibernate 命名查询不返回所有结果【英文标题】:nHibernate named query returns not all results 【发布时间】:2012-01-23 14:22:55 【问题描述】:

我有一些简单的命名查询,只有连接、蚂蚁对子选择。除了一个之外,它们都工作得很好。问题是,当我在 Management Studio 中运行 SQL 代码时,我得到 177 个结果,而当我使用相同的 SQL 代码运行命名​​查询时,我得到 20 个结果。我不知道为什么会这样。我将命名查询称为所有其他查询:

public IList<InstitutionIndexDTO> GetInstitutionIndexByWorkTimeSearch(int time, int institutionType)

    IQuery query = GetCurrentSession()
        .GetNamedQuery("GetInstitutionsListByTime")
        .SetInt32("Type", institutionType)
        .SetInt32("TimeUntilClose", time)
        .SetResultTransformer(Transformers.AliasToBeanConstructor(typeof(InstitutionIndexDTO).GetConstructors()[0]));

        return query.List<InstitutionIndexDTO>();

即使我在 SQL 中对参数进行了硬编码,我仍然得到相同的结果。我尝试使用 Profiler 检查,但生成的 SQL 是完美的,并且在 Management Studio 中返回所有 177 个结果。InstitutionIndexDTO 工作正常,因为我将它与其他命名查询一起使用。

我有一个有效的命名查询,导致问题的原因是那个查询,添加了额外的 INNER JOIN 并更改了 WHERE 子句。两个查询都返回相同的列。 也许有人有想法,我可能做错了什么?

【问题讨论】:

能否请您发布查询本身 【参考方案1】:

我测试了我的代码,发现这行导致了问题:(CASE WHEN (DATEPART(dw, GETDATE())) = 1 THEN 7 ELSE (DATEPART(dw, GETDATE()) - 1) END)

如果我理解得很好,问题出在 DATEPART 函数中。有人遇到过这个问题吗?

【讨论】:

以上是关于nHibernate 命名查询不返回所有结果的主要内容,如果未能解决你的问题,请参考以下文章

nhibernate中的命名查询错误

NHibernate中的命名查询不等于运算符

列错误中的冒号 ':' - 并非所有命名参数都已在 Nhibernate 中设置?

获取 NHibernate 中的命名查询列表

使用 PostgreSQL 和 NHibernate 的命名查询

NHibernate - 如何使用参数值记录命名参数化查询?