java hibernate hql语句错误
org.hibernate.hql.ast.QuerySyntaxException:unexpectedtoken:(nearline1,column22[SELECT...
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ( near line 1, column 22 [SELECT COUNT(*) from (select a.* from net.gbicc.xbrl.otc.model.OtcViewTemplate a ,(select t.viewKey,max(t.viewVersion) as m from net.gbicc.xbrl.otc.model.OtcViewTemplate t group by t.viewKey) b where a.viewKey = b.viewKey and a.viewVersion = b.m) te where te.viewName like ? and te.templateType=?]
展开
展开全部
Hql语句不是Sql语句,不能写成,select count(*) from TableName这种形式的。hibernate有它自己的方法查行数。
更多追问追答
追问
比如说max,hql要怎么写?
追答
那个不建议用hql写,建议用JDBC去写。如果,实在要用HQL,那就参照一下这个:
A、Order by子句:
与SQL语句相似,HQL查询也可以通过order by子句对查询结果集进行排序,并且可以通过asc或者desc关键字指定排序方式,如下面的代码:
from User user order by user.name asc,user.age desc;
上面HQL查询语句,会以name属性进行升序排序,以age属性进行降序排序,而且与SQL语句一样,默认的排序方式为asc,即升序排序。
B、Group by子句与统计查询:
在HQL语句中同样支持使用group by子句分组查询,还支持group by子句结合聚集函数的分组统计查询,大部分标准的SQL聚集函数都可以在HQL语句中使用,比如:count(),sum(),max(),min(),avg()等。如下面的程序代码:
String hql=”select count(user),user.age from User user group by user.age having count(user)>10 ”;
List list=session.createQuery(hql).list();
其实,也可以查询全部用LIST接收,然后得到list.size(),也是可以的!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询