nhibernate - 运行带有连接的计数

时间:2016-02-18 00:45:57

标签: sql nhibernate hql

所有

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

当我运行计数查询时,下面的HQL被错误地转换为SQL,换句话说,我运行了2个查询:

1)查询结果的第一个查询

2)相同的查询但更改选择列,以选择count(*)

看来我的联接已经消失,但我需要它们进行过滤! 你认为这个' fetch'关键字搞砸了吗?我在技术上并不需要"获取"在查询时我正在执行count()但需要第一次查询。

运行之前的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 

1 个答案:

答案 0 :(得分:0)

找到错误原因:

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