質問

次のものがあります:" image" 1:多くの" imageToTag"多数:1"タグ"

少なくともタグ[a、b、c]を持つすべての画像を返すクエリを発行したい。これをJPQLでどのようにモデル化できるかは、私には明らかではありません。クエリ文字列を動的に作成することもできますが、パフォーマンスとセキュリティ上の理由から悪いです。アイデアはありますか?

役に立ちましたか?

解決

擬似コード:

SELECT * FROM IMAGES 
  INNER JOIN IMAGETAGS A
    ON IMAGE.ID = A.IMAGEID AND A.TAGID = 'A'
  INNER JOIN IMAGETAGS B
    ON IMAGE.ID = B.IMAGEID AND B.TAGID = 'B'
  INNER JOIN IMAGETAGS C
    ON IMAGE.ID = C.IMAGEID AND C.TAGID = 'C'

推測するだけですが、JPQLで同等のものは次のようになります

Select img from Image img 
 JOIN img.tag ta 
 JOIN img.tag tb 
 JOIN img.tag tc 
  WHERE ta.description = 'A' and tb.description = 'B' and tc.description = 'C'

他のヒント

JPAクエリ言語はどうですか

Select img from Image img where img.tag.description in ('A','B','C');
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top