0

次のJPQLクエリで特定のタグでタグ付けされたアイテムを除外したい:

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

itemが1つだけでtag、これtagがリストにある場合に機能しexcludedTagsます。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 に答える