2010-12-21 5 views
0
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); 

나는HQL 상당

org.hibernate.hql.ast.QuerySyntaxException 오류를 얻고있다 URL U 같은 곳 U.pageId 갖는 카운트 (U.pageId) = 의해 U.pageType = 2 그룹 1)]

+0

소스 코드의 형식을 지정하려면 편집기에 {} 버튼이 있습니다.) – bluish

답변

0

참고로뿐만 아니라 HQL에 갖는 서브 쿼리기를 사용

예로. :

link text

0

귀하의 질의는 HQL 코드로 확인됩니다. 엔티티의 대문자에주의하십시오. 예를 들어 콩 클래스의 urlUrl 일 수 있습니다.

어쨌든 createSQLQuery(queryString) SQL 언어로 쿼리를 실행하는 방법이 있습니다.

0

HQL에서는 FROM 절에 하위 쿼리를 사용할 수 없습니다. (having count(U.pageId) = 1 포함)이 특별한 경우

(I 성능에 대해 잘 모르겠지만) 같은 결과가 다음의 쿼리에 의해 생성해야합니다

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()를 사용할 수 있습니다.

+0

위 쿼리는 작동하지만, 필자가 필요로하는 것은 아닙니다. 정확한 Hql SQL 쿼리를 필요로합니다. 하위 쿼리를 사용할 수 없습니다. from clause하지만 아래에 해결 방법이 있을지 궁금하다면 .............. select count (*) from (select * from page_type = 2 group by page_id having (count (page_id) = 1)) – Ananth

+0

@kash : 업데이트되었습니다. – axtavt