2011-05-01 76 views
0

我有与标签相关的软件 - 多对多。 我想创建一个查询,它将选择所有与我作为参数放置的所有标签相关的软件。我可以在JPQL中使用子句IN来选择这两个项目吗?

我写:

公共静态列表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。 如何创建这样的查询?

回答

0

我找到了答案:

TypedQuery查询= Software.em()的createQuery(“SELECT查询 从软件的内在JOIN s.tags标签 WHERE标记IN(:标签)GROUP BY COUNT(tag)=:size“,Software.class);

相关问题