3

Entry次の関係を持つエンティティがあります。

@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToMany(mappedBy = "entryList", cascade = {CascadeType.ALL} )
    private List<Tag> tags = new LinkedList<>();

この SELECT ステートメントEntryは、リレーション内にリストからtags少なくとも1 つの要素がある場所をすべて選択しlistます。

SELECT m FROM Entry m JOIN m.tags tags WHERE tags IN :list;

しかし、私が欲しいのは、 のすべての要素が関連している必要があるEntry場所をすべて選択する SELECT ステートメントですか?listtags

4

1 に答える 1

1

サブクエリとカウントを使用する必要があると思いますが、

Select e from Entry e where (Select count(t) from Tag t, Entry e2 join e2.tags t2 where t2 = t and e = e2 and t.id in (:ids)) = :size

ids はタグの ID で (オブジェクトも使用できる場合があります)、:size はタグ コレクションのサイズです。

タグに逆の mm を使用できるエントリがある場合は、

Select e from Entry e where (Select count(t) from Tag t join t.entries e2 where e = e2 and t.id in (:ids)) = :size
于 2013-08-28T14:21:39.100 に答える