Mysql使用Fluenthibernate基于列进行排名
本文关键字:于列进 使用 Fluenthibernate Mysql | 更新日期: 2023-09-27 17:59:02
我有下面的表
学生[Student_id,学生名称,分数]
我想根据分数对学生进行排名,并使用FluentHibernate 通过student_id获得特定的排名位置
我在下面写了hql查询并得到了
NHibernate.Hql.Ast.ANTLR.QuerySyntaxException:识别错误发生。例外
NHibernate.IQuery q = session
.CreateQuery("SELECT student_id, student_name, marks, @curRank := @curRank + 1 AS rank"+
" FROM Student p, ( SELECT @curRank := 0 ) q " +
" where student_Id = '02610' ORDER BY marks DESC")
.SetMaxResults(1);
我认为问题是Hql无法识别':='如果有人知道如何解决这个问题,请告诉我,谢谢
我不完全确定查询的内容(在MySQL中)。。希望你知道如何进行排名,如果不检查这里的例子:
使用mysql获取当前排名
要在NHibernate中使用正确的(工作MySQL),我们必须这样调整:
NHibernate.ISQLQuery q = session
.CreateSQLQuery("SELECT student_id, student_name...")
.SetMaxResults(1)
;
关键是,CreateSQLQuery
返回ISQLQUery,它实际上是原始SQL,与底层数据库引擎方言有关。
以前使用的CreateQuery
是关于HQL的,它独立于DB引擎方言。。。但需要实体查询(而不是原始SQL)
点击此处阅读更多: