2016-12-21 12 views
0

ネストされたSELECTが値を比較するために外部SELECTを参照できるかどうか不思議です。私はこのトピックに関する多くの例をテストしたり、見たりすることができませんでした。JPQLアクセス外部クエリのネストされたクエリ

例として、指定されたリスト内にあり、与えられた時間より前に最も高い時間(合計である)のタグを持つすべてのClothes行を選択するクエリを作成しようとしています秒数)。問題のクエリは次のとおりです。

SELECT c FROM Clothes c WHERE c.tag IN :tagList 
AND (c.timeOfSale = (SELECT MAX(n.timeOfSale) FROM Clothes k 
WHERE (c.tag = k.tag) AND (k.timeOfSale) < (:time))) GROUP BY c.tag 

c.tag = k.tagは有効ですか?そうでない場合、代替手段はありますか?

+1

JPAプロバイダは、あなたがそれをしたときに何を言っていますか? –

答えて

0

はい。それらは相関されたクエリと呼ばれ、サブクエリは外部クエリの各行に対して評価されます。

0
@Query("SELECT b FROM Business b WHERE b <> :currentBusiness " 
     + "and exists " 
     + "(Select i from InterestMaster i, BusinessInterest bI where bI.interestMaster = i and bI.business = b" 
     + "and i in (:userInterests))") 
Page<Business> getCommunityBusiness(@Param("currentBusiness") Business currentBusiness, @Param("userInterests") List<InterestMaster> userInterests,Pageable pageable); 

私は上記のJPQLとその動作上の罰金を使用しています。したがって、ネストしたクエリは外部クエリにアクセスできます。