nhibernate - 当 运行 count w/ join 时,生成的 SQL 不正确

nhibernate - Incorrect generated SQL when running count w/ a join

全部,

我正在使用 Nhibernate 3.3,asp.net 2.0.

仅当我 运行 计数查询时,下面的 HQL 才被错误地翻译成 SQL,换句话说,我 运行 2 个查询:

1)第一次查询查询结果

2) 相同的查询,但将 select 列更改为 select count(*)

我的连接似乎不见了,但我需要它们进行过滤! 你认为 'fetch' 关键字搞砸了吗?从技术上讲,我在执行 count() 时不需要在查询中使用 "fetch",但在第一个查询中需要它。

HQL 在 运行 之前:

                                 select count(legal.id) from OtherRPlan_ p
                                    inner join fetch p.IssuedBy
                                    left join fetch p.Region

                                    left join fetch p.LegalDescList legal
                                where p.Status = true and p.Region.Id = :region  

从 HQL 生成 SQL:

                            select count(legaldescl3_.entity_id) as col_0_0_ 
                                from Other_Rplans otherrplan0_ 
                                where otherrplan0_.status=1 and otherrplan0_.region_id=@p0 

找到错误原因:

在查询中使用 'fetch' 关键字会导致此行为。我知道在 count() 中使用 'fetch' 没有意义,但是在动态构建查询时,您尝试尽可能多地重复使用代码(在两个查询中应该相同)以便于维护和一致性。