2011-10-18 100 views
2

我想使用HQL查詢來查詢我的數據庫,以檢索具有大於SOME_DATEMY_DATE的行的總數。來自多個表的HQL計數

到目前爲止,我想出了一個原生的Oracle查詢得到這一結果,但在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頁以上的表,但我一直有一個IllegalArgumentExceptionunexpected end of subtree)。

工作原生Oracle基本上以FROM dual結尾。

我應該使用什麼HQL查詢來獲取我想要的總行數?

回答

1

首先,如果您有一個正在運行的SQL查詢,那麼爲什麼不直接使用它來代替嘗試將其轉換爲HQL?由於你首先要返回一個標量,它不像你需要HQL提供的任何東西(例如依賴實體等等)。

其次,你有'雙'映射到Hibernate嗎? :-)如果不是,你打算如何翻譯?

這就是說,「意外的子樹結束」錯誤通常是由Hibernate的AST分析器的特性造成的。常用的解決方法是在表達式前加'0 +':

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