在为实体书构建谓词时,我希望能够 离开连接类别(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实例的情况下继续进行?
答案 0 :(得分:1)
您需要Query在Querydsl中声明左连接。如果这与Spring Data相关,他们可能会提出API级解决方案。
book.categories.any()可以用来代替类别,但它与JPQL的序列化方式不同,使用子查询而不是连接。