我可以在JPQL中使用子句IN来选择这两个项吗?

时间:2011-05-01 13:59:15

标签: sql hql jpql

我有与标签相关的软件 - 多对多。 我想创建一个查询,它将选择与我作为参数放置的所有标签相关的所有软件。

我写道:

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。 如何创建这样的查询?

1 个答案:

答案 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);