让我们想象一下,我有一些带有java.List标签的Product实体,如blelow:
@Entity
public class Product impements Serializable{
...
private List<String> tags;
}
我有用户,想要搜索任何标签标记的产品(例如):Car,Motocycle,Plane。
因此,当涉及到搜索时,我的实体中有标签列表,以及搜索标签列表,我需要的是在产品的标签列表中至少有一个标签。我不知道怎么写这样的查询。请求帮助
答案 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;