让我们想象一下,我有一些带有 java.List 标签的 Product 实体,如下所示:
@Entity
public class Product impements Serializable{
...
private List<String> tags;
}
我有一个用户,他想搜索被任何标签(例如)标记的产品:汽车、摩托车、飞机。
所以当涉及到搜索时,我的实体中有标签列表和搜索标签列表,我需要的只是在我的产品标签列表中至少有一个。我不知道如何编写这样的查询。谢谢帮助
在 beny23 发布他的解决方案之前,我通过添加来修复它
SELECT p FROM Product p, IN (p.tags) t where t in (:searchList)
但他的回答也是正确的。
您可以使用以下 HQL 查询来执行此操作:
session.createQuery("from Product p join p.tags t where t = :tag")
.setString("tag", tagToSearchFor)
尝试这样的事情:
@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;