2011-01-21 30 views
0

私には次のような状況があります。JPAでの集計関数の使用

時刻t1から時刻t2までの入札のリストを取得したいと考えています。その後、このリストから、落札価格、つまり最大入札価格を取得したいと思います。

私は以下のJPAクエリを書いています。

ただし、次の例外が発生しています。

Exception Description: Syntax error parsing the query [SELECT b FROM Bid b WHERE b.bidAmt = (SELECT MAX(b.bidAmt) FROM b WHERE b.lastUpdtTs BETWEEN ?1 AND ?2)], line 1, column 64: unexpected token [b]. 
Internal Exception: NoViableAltException(66!=[1108:1: subselectIdentificationVariableDeclaration[List varDecls] : (identificationVariableDeclaration[varDecls] | n= associationPathExpression (AS)? i= IDENT | n= collectionMemberDeclaration);]) 

誰かが間違いを指摘していますか?

答えて

1

次試してみる:

SELECT b FROM Bid b WHERE b.bidAmt = 
    (SELECT MAX(bb.bidAmt) FROM Bid bb WHERE bb.lastUpdtTs BETWEEN ?1 AND ?2) 
1

自分で試したことはありませんが、私の見ているものから、あなたのサブクエリに間違いがある可能性があります。 FROM bと言うが、それはFROM Bid bでなければならない。だから、全体のクエリは次のようになります。

SELECT b FROM Bid b WHERE b.bidAmt = (SELECT MAX(b.bidAmt) FROM Bid b WHERE b.lastUpdtTs BETWEEN ?1 AND ?2) 
+0

私は上記を試してみましたが、次の例外例外説明を得た:エラーは、クエリのコンパイル[ b。bidAmt =(SELECT MAX(b.bidAmt)FROM BID b WHERE b.lastUpdtTs BETWEEN?1 AND?2)]、行1、列68:複数の宣言識別変数[b] [Bid b]と宣言された – cyclecount

0

あなたが二時間を持っエラーは、変数識別 の複数の宣言[B]、以前 として宣言[入札B]

です

上記のエラーから、bエイリアスが複数回宣言されたように見えるので、サブクエリbをサブクエリから削除してください

あなたが参照に二つの異なるBidのインスタンスを照会するので、彼らは別の別名を持つ必要があり、クエリ

SELECT b FROM Bid b WHERE b.bidAmt = 
    (SELECT MAX(bidAmt) FROM Bid WHERE lastUpdtTs BETWEEN ?1 AND ?2) 
関連する問題