0

我想使用以下 JPQL 查询排除带有某些标签的项目:

select distinct i from Item i join i.tags t where t not in (:excludedTags)

如果 anitem只有一个tag并且它tagexcludedTags列表中,则它可以工作。但是,如果还有其他tag内容item,它仍然会被选中!

模型的相关部分:

@Entity
class Tag {
  @ManyToMany(mappedBy="tags")
  var items
}

@Entity
class Item {
  @ManyToMany
  var tags
}

如何使用 JPQL 排除具有任何已排除标签的项目?

4

1 回答 1

1

查询应该是这样的:

select distinct i from Item i where not exists (
    select t from Item i2 
    join i2.tags tag
    where i2.id = i.id
    and tag.id in :excludedTags)
于 2013-03-13T19:10:13.490 回答