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);
我收到错误
org.hibernate.hql.ast.QuerySyntaxException:意外令牌:(靠近第1行,第23列[SELECT count()FROM(SELECT * FROM Url as U,其中U.pageType = 2 group by U.pageId having count( U.pageId)= 1)]
答案 0 :(得分:0)
答案 1 :(得分:0)
您的查询似乎可以作为HQL代码。注意实体的大写字母:例如,bean类中的url
可以是Url
。
无论如何,方法createSQLQuery(queryString)
以SQL语言运行查询。
答案 2 :(得分:0)
在HQL中,您不能在FROM
子句中使用子查询。
在这种特殊情况下(使用having count(U.pageId) = 1
),下面的查询应该会产生相同的结果(虽然我不确定性能):
SELECT count(u) FROM Url u WHERE u.pageType = 2 AND
1 = (SELECT count(uu) FROM Url uu WHERE u.pageId = uu.pageId)
如果不合适,可以使用session.createSQLQuery()
。