搜索列表包含java hibernate中列表中任何值的实体

时间:2013-02-01 11:06:30

标签: java hibernate entity

让我们想象一下,我有一些带有java.List标签的Product实体,如blelow:

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

我有用户,想要搜索任何标签标记的产品(例如):Car,Motocycle,Plane。

因此,当涉及到搜索时,我的实体中有标签列表,以及搜索标签列表,我需要的是在产品的标签列表中至少有一个标签。我不知道怎么写这样的查询。请求帮助

3 个答案:

答案 0 :(得分:4)

您可以使用以下HQL查询执行此操作:

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

答案 1 :(得分:4)

在beny23发布他的解决方案之前我通过添加

修复了它
SELECT p FROM Product p, IN (p.tags) t where t in (:searchList)

但他的答案也是正确的。

答案 2 :(得分: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;