2013-02-01 21 views
2

讓我們想象一下,我有一些產品實體的標籤java.List,爲blelow:搜索實體,其中列表包含在Java列表中的任何值冬眠

@Entity 
public class Product impements Serializable{ 
    ... 
    private List<String> tags; 
} 

,我有用戶想要搜索對於標籤(例如)由任何標籤標記的產品:汽車,摩托車,飛機。

因此,當涉及到搜索時,我有我的實體中的標籤列表和搜索標籤列表,其中我需要的是我的產品標籤列表中至少有一個標籤。我不知道如何編寫這樣的查詢。 THX的幫助

回答

2

之前beny23發佈了他的解決方案,我通過添加

SELECT p FROM Product p, IN (p.tags) t where t in (:searchList) 

但他的回答也是正確的。

0

嘗試這樣:

@Entity 
public class Product implements Serializable{ 
    ... 
    private List<String> tags; 

    public boolean contains(List<String> inputTags) { 
     for (String tag : inputTags) { 
      if(tags.contains(tag)){ 
       return true;     
      } 
     } 
     return false; 
    } 
} 

,或者你可以做2的foreach,並使用

if(inputTag.equals(productTag)) return true; 
+0

不會在數據庫中使用hibernate搜索它,但thx回答 – Misiakw

3

爲此,您可以使用下面的HQL查詢:

session.createQuery("from Product p join p.tags t where t = :tag") 
     .setString("tag", tagToSearchFor)