2014-04-29 163 views
0

我是JPA的新開發人員,並使用JPQL從數據庫中寫入檢索記錄。以下是我的查詢。基本上我想從表Z.查找選擇查詢的最大值

SELECT X.Id,   
    MAX (
     NVL (
      (SELECT field1 
       FROM table Z 
      WHERE X.Id = Z.id.Id),'')) field 
FROM table1 X, table2 Y 
WHERE X.Id = Y.Id 
group by X.Id 

找到FIELD1最大在執行此查詢我得到如下錯誤

java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.AggregateNode 
\-[AGGREGATE] AggregateNode: 'MAX' 
\-[METHOD_CALL] MethodNode: '(' 
    +-[METHOD_NAME] IdentNode: 'NVL' {originalText=NVL} 
    \-[EXPR_LIST] SqlNode: 'exprList' 

請指教。當我使用普通的sql運行查詢時,它的工作正常。

回答

0

也許你有''問題:

NVL (
     (SELECT field1 
      FROM table Z 
     WHERE X.Id = Z.id.Id),'') 

嘗試這樣的事:

NVL (
     (SELECT field1 
      FROM table Z 
     WHERE X.Id = Z.id.Id),0) 
+0

我試着這樣做,錯誤看起來是一樣的。當我試圖從MAX中刪除SELECT查詢並執行MAX(somefield)之類的操作時,它工作正常。你認爲如果Syntax有問題嗎?請讓我知道 – skanda

+0

jpql是否支持這種語法來查找像select這樣的子查詢的最大值? – skanda

+0

讓我知道如果JPQL不支持MAX中的子查詢。建議這是否是規範限制? – skanda