2011-01-09 50 views

回答

3

[這個搜索所有不是所有;請參考其他正確答案。]

您可以設置列表作爲參數。

SELECT x FROM Question x WHERE x.tags IN :tags 

另請嘗試使用(:標籤),因爲它取決於您正在使用的JPA實現。

+1

我會在短時間內進行測試。我知道它是有效的,如果我檢查一個標籤是否在標籤列表中。但是現在我的情況涉及測試一個標籤列表是否是另一個標籤列表的子集。 – joshua 2011-01-10 09:07:50

+0

解決方案是什麼? – Phil 2011-10-15 14:48:13

+0

是的。那工作。 – joshua 2012-02-27 09:38:34

5

嘗試這樣的:我

select distinct q from Question q join q.tags as t 
where t.name in (:tags) 
group by q.id, q.author, q.title, q.content,q.postedAt 
having count(t.id) = :size 
4

Nayans解決方案一點兒也不工作。它選擇符合給定集合':tags'的第一個(或任何?)條目的每個'x'。如果這真的對你有用,你應該再次測試你的應用程序;)可能是JPA依賴 - 我不知道。

提示:嘗試Krzysztofs溶液或使用地雷:

SELECT x FROM Question x 
WHERE x IN (
    SELECT y FROM Question y 
    INNER JOIN y.tags yt 
    WHERE yt IN (
     :tags 
    ) 
    GROUP BY y 
    HAVING COUNT(DISTINCT yt) = (
     :tagsSize // should be clear ;) 
    ) 
) 
相關問題