2010-06-17 49 views
3

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

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

有何评论?

该问题是通过使用另一个子查询来解决SQL解析错误。

回答

0

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