5

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

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

我有一个用户,他想搜索被任何标签(例如)标记的产品:汽车、摩托车、飞机。

所以当涉及到搜索时,我的实体中有标签列表和搜索标签列表,我需要的只是在我的产品标签列表中至少有一个。我不知道如何编写这样的查询。谢谢帮助

4

3 回答 3

6

在 beny23 发布他的解决方案之前,我通过添加来修复它

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

但他的回答也是正确的。

于 2013-02-01T12:35:17.993 回答
5

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

session.createQuery("from Product p join p.tags t where t = :tag")
       .setString("tag", tagToSearchFor)
于 2013-02-01T12:19:45.167 回答
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;
于 2013-02-01T12:03:57.570 回答