我有与标签相关的软件 - 多对多。 我想创建一个查询,它将选择与我作为参数放置的所有标签相关的所有软件。
我写道:
public static List searchByTags(List tags){
TypedQuery query =
Software.em().createQuery("SELECT DISTINCT s FROM Software s, IN(s.tags) t WHERE t IN(:tags)", Software.class);
query.setParameter("tags", tags);
return query.getResultList();
}
但这不是我想要的。例如,如果我有:
soft1 -> tag1,tag2
soft2 -> tag2
它会选择我两个。但我只想要一个 - soft1。 如何创建这样的查询?
答案 0 :(得分:0)
我找到了答案:
TypedQuery query = Software.em()。createQuery(“SELECT s 来自Software的INNER JOIN s.tags标签 WHERE标签IN(:标签)GROUP BY s HAVING COUNT(tag)=:size“,Software.class);