1
我: 「圖像」 1:許多 「imageToTag」 很多:1 「標籤」在JPA中獲取查詢交集?
我想發出一個查詢,將返回有至少標籤[A,B,C]的所有圖像。我不清楚在JPQL中如何建模。我可以動態構建查詢字符串,但這對性能和安全性不利。有任何想法嗎?
我: 「圖像」 1:許多 「imageToTag」 很多:1 「標籤」在JPA中獲取查詢交集?
我想發出一個查詢,將返回有至少標籤[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');
這將返回所有描述爲「A或B或C」而不是「A和B和C」的圖像 – Gili 2009-02-03 01:47:31