8

在为实体书构建谓词时,我希望能够在类别 (ManyToMany) 上左连接以在类别上添加 AND 谓词。如果我有 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)));

但是对于 leftjoin 如何在没有 jpaQuery 实例的情况下进行?

4

1 回答 1

1

您需要 Query 在 Querydsl 中声明左连接。如果这与 Spring Data 相关,他们可能会提出 API 级别的解决方案。

book.categories.any() 可以用来代替类别,但它的序列化方式与 JPQL 不同,使用子查询而不是连接。

于 2012-11-25T08:35:09.863 回答