使用order by,conditional projection和SetFirstResult()时nHibernate出错

时间:2012-08-17 16:28:51

标签: nhibernate nhibernate-criteria

在查询中使用order by,conditional projection和SetFirstResult()时,我收到此错误:

  

此SqlParameterCollection的索引4无效,Count = 4

根据我的经验,当您将一个字段映射到两个属性时,通常会发生此错误,如here所示。但在这种情况下不是这种情况,查询工作正常,直到我将一个大于0的值传递给SetFirstResult()。

与Nhiberbate一起登录的

This bug似乎非常类似,但它在2年前修复过。

有关如何进行的任何建议?以下是代码示例:

var query = Session.CreateCriteria<KeepItem>(KeepAlias)
            .CreateAlias("Resource", ResourceAlias)
            .CreateAlias("Memory", MemoryAlias, JoinType.LeftOuterJoin);

// other code

 query.AddOrder
                    (
                        Order.Asc
                        (
                            Projections.Conditional
                            (
                                Restrictions.IsNull(MemoryAlias + ".MinDate"),
                                Projections.Conditional
                                (
                                    Restrictions.IsNull(ResourceAlias + ".MinDate"),
                                    Projections.Constant(DateTime.MaxValue),
                                    Projections.Property(ResourceAlias + ".MinDate")
                                ),
                                Projections.Property(MemoryAlias + ".MinDate")
                            )
                        )
                    );

//other code

 query.SetFirstResult(skip);
 query.SetMaxResults(take);
  return query.List<KeepItem>();

0 个答案:

没有答案