2011-10-18 3 views
2

SOME_DATE보다 큰 MY_DATE을 가진 행의 총 수를 검색하기 위해 HQL 쿼리를 사용하여 데이터베이스를 쿼리하고 싶습니다.여러 테이블에서 HQL 카운트

지금까지, 그 결과를 얻기 위해 네이티브 오라클 쿼리를 마련했지만, HQL에 쓸 때 나는 갇혀입니다 :

SELECT 
    (
    SELECT COUNT(MY_DATE) 
    FROM Table1 
    WHERE MY_DATE >= TO_DATE('2011-09-07','yyyy-MM-dd') 
    ) 
    + 
    (
    SELECT COUNT(MY_DATE) 
    FROM Table2 
    WHERE MY_DATE >= TO_DATE('2011-09-07','yyyy-MM-dd') 
    ) 
AS total 

는 사실 2 개 이상의 테이블을 가지고 있지만 나는 IllegalArgumentException을 가진 유지 (unexpected end of subtree).

작동중인 원시 오라클은 기본적으로 FROM dual으로 끝납니다.

내가 원하는 전체 행 수를 얻기 위해 어떤 HQL 쿼리를 사용해야합니까?

답변

1

첫 번째로 작동하는 SQL 쿼리가있는 경우이를 HQL로 변환하는 대신 사용하십시오. 첫 번째 스칼라를 반환하기 때문에 HQL에서 제공하는 것 (예 : 종속 엔터티 등)이 필요하지 않습니다.

두 번째로 최대 절전 모드에서 '이중'매핑을 사용합니까? :-) 그렇지 않다면 정확히 어떻게 번역 할 계획입니까?

말하자면, "예상치 못한 end of subtree"오류는 Hibernate의 AST 파서의 특이성 때문에 발생합니다. 일반적으로 사용되는 해결 방법은 '0 +'을 접두어 앞에 붙이는 것입니다.

select 0 + (
    ... nested select #1 ... 
     ) + (
    ... nested select #2 ... 
     ) as total 
    from <from what exactly?>