2
有没有人可以请解释为什么MSSql2012Dialect上的NHibernate会生成无法由服务器处理的查询?它在没有明确指定排序的情况下以这种方式构建查询。NHibernate ORDER BY CURRENT_TIMESTAMP
...
ORDER BY CURRENT_TIMESTAMP
OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY
有没有人可以请解释为什么MSSql2012Dialect上的NHibernate会生成无法由服务器处理的查询?它在没有明确指定排序的情况下以这种方式构建查询。NHibernate ORDER BY CURRENT_TIMESTAMP
...
ORDER BY CURRENT_TIMESTAMP
OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY
这是未解决的错误登记在jira的基础上,建议,这是我的解决方法:
public class MyMsSql2012Dialect : MsSql2012Dialect
{
public override SqlString GetLimitString(SqlString querySqlString, SqlString offset, SqlString limit)
{
var result = base.GetLimitString(querySqlString, offset, limit);
return result.Replace("ORDER BY CURRENT_TIMESTAMP", "ORDER BY 1");
}
}
它使用'OFFSET'条款,当'需要PAGING'。在这种情况下,它将通过时间戳选择前10行的顺序。你有一些分页,对吧? – gotqn
你是什么意思“无法由服务器处理”?如果我将该代码附加到普通选择的末尾,它将毫无错误地运行。 –
正确。这是关于分页。 – pavel