我有一些简单的命名查询,只有连接、蚂蚁对子选择。除了一个之外,它们都工作得很好。问题是,当我在 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 是完美的,并且在管理工作室中返回所有 177 个结果。
InstitutionIndexDTO
工作正常,因为我将它与其他命名查询一起使用。
我有一个有效的命名查询,导致问题的原因是那个查询,添加了额外的 INNER JOIN 并更改了 WHERE 子句。两个查询都返回相同的列。
也许有人有一个想法,我可能做错了什么?