我想帮助理解以下JPQL查询。上下文是一个简单的博客应用程序,其中帖子和标签具有多对多的关系。我们正在尝试查找标记为传递给方法的所有标记的帖子:
public static List<Post> findTaggedWith(String... tags) {
return Post.find(
"select distinct p from Post p join p.tags as t where t.name in (:tags) group by p.id, p.author, p.title, p.content,p.postedAt having count(t.id) = :size"
).bind("tags", tags).bind("size", tags.length).fetch();
}
基本上,我想让某个人为我打破那个查询中发生的事情。具体来说,我对使用GROUP BY和多个字段感到困惑。我认为,如果我们按照id进行分组,这是唯一的,那么按其他任何方式进行分组将是多余的。我错过了什么?