8

Entity Book の Predicate を作成するとき、Category (ManyToMany) に結合したままにして、Category に AND Predicate を追加できるようにしたいと考えています。JPAQuery インスタンスがあれば、簡単に実現できます。

if (catId != null) {
    jpaQuery.leftJoin(book.categories, category);
    jpaQuery.where(category.id.eq(catId).or(category.parentCategory.id.eq(catId)));
}

しかし、述語を構築するとき、私はまだ JPAQuery を持っていません。したがって、述語自体については、次のことができます。

booleanBuilder.and(category.id.eq(this.categoryId).or(category.parentCategory.id.eq(this.categoryId)));

しかし、左結合の場合、jpaQuery インスタンスなしで続行するにはどうすればよいですか?

4

1 に答える 1

1

Querydslで左結合を宣言するには、Queryが必要です。これがSpringDataに関連している場合、APIレベルのソリューションを思い付く可能性があります。

book.categories.any()はcategoryの代わりに使用できますが、結合の代わりにサブクエリを使用して、JPQLとは異なる方法でシリアル化されます。

于 2012-11-25T08:35:09.863 に答える