Hibernate sql查询的HQl等价物

Hibernate sql查询的HQl等价物,hibernate,hql,Hibernate,Hql,我犯了一个错误 org.hibernate.hql.ast.QuerySyntaxException:意外标记:第1行第23列附近[从Url中选择count FROM SELECT*FROM作为U,其中U.pageType=2按U.pageId分组,countU.pageId=1]您也可以在hql中使用group by和having以及SUBY查询 一些例子: 您的查询似乎与HQL代码一样正常。注意实体的大写字母:例如,bean类中的url可以是url 无论如何,有一种方法createSQLQu

我犯了一个错误


org.hibernate.hql.ast.QuerySyntaxException:意外标记:第1行第23列附近[从Url中选择count FROM SELECT*FROM作为U,其中U.pageType=2按U.pageId分组,countU.pageId=1]

您也可以在hql中使用group by和having以及SUBY查询

一些例子:


您的查询似乎与HQL代码一样正常。注意实体的大写字母:例如,bean类中的url可以是url


无论如何,有一种方法createSQLQueryqueryString可以在SQL语言中运行查询。

在HQL中,不能在FROM子句中使用子查询

在countU.pageId=1的这种特殊情况下,下面的查询应该会产生相同的结果,尽管我不确定性能:

String SQL_QUERY = "SELECT count(*) FROM (SELECT * FROM Url as U where U.pageType=" + 1 + " group  by U.pageId having count(U.pageId) = 1)";
query = session.createQuery(SQL_QUERY);

如果不合适,可以使用session.createSQLQuery.

格式化源代码,编辑器中有{}按钮;上面的查询有效,但这不是我需要的。。我需要一个与Hql中下面的sql查询完全相同的查询:我知道我不能在from子句中使用子查询,但我只是想知道下面是否有解决方法。。。。。。。。。。。。。。从Url中选择count*,其中页面类型为2,按页面id分组,页面id为1
SELECT count(u) FROM Url u WHERE u.pageType = 2 AND
    1 = (SELECT count(uu) FROM Url uu WHERE u.pageId = uu.pageId)