NHibernate命名查询参数编号@ p1 @ p2等

时间:2010-06-17 20:28:53

标签: nhibernate

一位同事最近遇到了一个问题,他将一个日期参数传递给一个命名查询。在查询中,参数被使用了两次,一次在表达式中,一次在GROUP BY子句中。令我们惊讶的是,我们发现NHibernate使用了两个变量,并将两个命名参数一起发送,如@ p1和@ p2。这种行为导致SQL无法通过查询,通常“select子句中的列不在group by子句中”(我的解释)。

这种行为是正常的吗?可以改变吗?在我看来,如果你有一个参数名称如:startDate,NHibernate只需要传入@ p1,无论你可以在查询中引用多少次:startDate。

有任何意见吗?

通过使用另一个子查询来克服SQL解析错误,解决了这个问题。

1 个答案:

答案 0 :(得分:0)

例如,如果您使用的数据库不支持命名参数,则可能发生这种情况,在这种情况下,NHibernate使用位置参数,并复制该值。