【发布时间】:2012-11-23 18:40:45
【问题描述】:
在为实体书构建谓词时,我希望能够 在类别 (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 实例如何进行?
【问题讨论】:
-
有关于这个的消息吗?我正在到处寻找一个优雅的 Joining Fetching 解决方案,没有太多麻烦......显然 Spring Data 并没有想到比他们的基本示例中显示的单个“从哪里选择场景”更复杂的用例。 ..
-
是的,我找到了一个解决方案:我编写了 spring-data 接口的扩展:公共接口 TworkQueryDslRepository
extends JpaRepository {) 并添加了一个准备方法:JPAQuery创建查询();以及所有使用新参数类型的 JPAQuery 执行方法: ex age findAll(JPAQuery jpaQuery, Predicate predicate, Pageable pageable);目标是构建 Repo 并给我 JPAQuery 以便我可以获取。第二阶段,我可以调用一个几乎标准的 repo API,但在我的情况下将 JPAQuery 作为第一个参数返回。我有时应该做一个 PullResquest -
@GauthierPeel 您能否详细说明您的解决方案,也许以答案的形式?真的很有帮助!
-
现在在 spring boot 2.6+ 我们有一个功能。即使这是一项新功能,但似乎并非所有功能都有效:stackoverflow.com/questions/71100160/…