当前位置: 首页 > 知识库问答 >
问题:

如何在QueryDSL中通过关系构造多个内部联接--引用中间表

涂承运
2023-03-14
A --> B --> C 

关系,而是

A --> B <-- C

这是我的SQL查询

select s.* from sales s
inner join branch b on b.id = s.branch_id
inner join manager m on m.branch_id = b.id and m.name = 'Alice';

(摘自我这里的示例:https://www.db-fiddle.com/f/r5uvesivyahrp6kspwjxba/1)

query.innerJoin(QSales.branch, QBranch)
     .innerJoin( ??? )

我所尝试的所有操作都给出了一些例外情况,如path expected for join!

假设,如果是一对一的,我可以像这样锁链...

query.innerJoin(QSales.branch, QBranch)
     .innerJoin( QBranch.manager, QManager ).on(QManager.name.eq('Alice'));

但我没有那种关系。

共有1个答案

尹善
2023-03-14

通常,我已经炮制了一些样品,我找到了正确的组合。

此解决方案响应于在B和多个C之间具有manytoone映射

query.innerJoin(QSales.branch, QBranch)
     .innerJoin( QBranch.managers, QManager )
       .on(QManager.name.eq('Alice'));

通过在分支中列出managers,QueryDSL知道要做什么,并生成适合我的SQL。

 类似资料:
  • 如何在中实现或。一个简单的例子很有帮助。

  • 问题内容: 我有以下查询。它工作正常,但我需要从另一个名为FB的表中提取BUserName,该表具有与FU表中的UserID相关的UserID字段。这可能吗? 只是为了澄清。我在FB表中没有UserName列。它确实有FB.UserID,它与FF.UserID有关系,这是我要从中提取第二个UserName的地方。因此,通过这种关系,我试图从与FB表中的userID相关的FF.UserID表中拉出用

  • 我试图将QueryDSL与Spring Data JPA一起使用。

  • 我有一个医院(点)的空间表,它与(非空间)价表(卷曲、紧急等)具有一对多关系。 医院(id,name,geom);化合价(id,名称,化合价) “name”是公共字段。 如何在PostgreSQL/Postgis中构造一个有效的Geojson,其中每个医院(点)可以有一个或多个价? 我已经尝试了这个查询的一些变体,但是总是给出相同的错误“作为表达式使用的子查询返回了多行”。 非常感谢!

  • 基础回购 和存储库类 现在我想使用带有谓词查询的Repo。我需要形成一个谓词,在这个谓词中,我可以根据给定的Bs加载

  • 我正在使用查询与Spring数据jpa。我已经实现了自定义存储库来查找人名。人员实体如下所示: 实施的自定义存储库: 在选择表达式中,我想连接三列来构造全名。如果数据库有如下记录- 那么我想选“约翰·斯诺先生”。有什么办法可以做到吗? 我不想选择整个记录来连接值,因为实体有其他列和许多关联,加载整个记录不好。