如何在构建Predicate(s)时加入,但没有JPAQuery实例

时间:2012-11-23 18:40:45

标签: java querydsl

在为实体书构建谓词时,我希望能够 离开连接类别(ManyToMany)以在类别上添加AND谓词。 如果我有JPAQuery实例,我可以简单地实现它:

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

但是在构建Predicates时我还没有JPAQuery。 所以对于Predicate本身我可以这样做:

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

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

1 个答案:

答案 0 :(得分:1)

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

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