2008-12-31 87 views
1

我: 「圖像」 1:許多 「imageToTag」 很多:1 「標籤」在JPA中獲取查詢交集?

我想發出一個查詢,將返回有至少標籤[A,B,C]的所有圖像。我不清楚在JPQL中如何建模。我可以動態構建查詢字符串,但這對性能和安全性不利。有任何想法嗎?

回答

2

僞代碼:

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' 
0

怎麼樣,這是JPA查詢語言

Select img from Image img where img.tag.description in ('A','B','C'); 
+0

這將返回所有描述爲「A或B或C」而不是「A和B和C」的圖像 – Gili 2009-02-03 01:47:31