问题描述
|
我有与标签相关的软件-多对多。
我想创建一个查询,该查询将选择与我放置为参数的所有标签相关的所有软件。
我写:
公共静态列表searchByTags(列表标签){
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。
如何创建这样的查询?
解决方法
我找到了答案:
TypedQuery查询=
Software.em()。createQuery(\“ SELECT s
FROM Software的INNER JOIN s.tags标签
标记在(:tags)中的分组依据
COUNT(tag)=:size \“,Software.class);