【发布时间】:2018-12-31 20:17:14
【问题描述】:
我在构建将QueryDSL 中的内部联接组合在一起的查询时遇到问题,其中表不在
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)
所以对于我的 QueryDSL 等价物,我有:
query.innerJoin(QSales.branch, QBranch)
.innerJoin( ??? )
我不知道如何构造下一个内连接。
我尝试过的所有事情都给了我例外,例如Path expected for join!
假设,如果它是一对一的,我可以像这样链接......
query.innerJoin(QSales.branch, QBranch)
.innerJoin( QBranch.manager, QManager ).on(QManager.name.eq('Alice'));
但我没有那种关系。
我在 QueryDSL 中找不到合适的构造来对此进行建模,但我假设它是可能的?
【问题讨论】:
-
我想我错过了这个问题。为什么正常模式不能这样工作? query() .select() .from(sales) .innerJoin(branch).on(branch.id.eq(sales.id)) .innerJoin(manager).on(manager.branchId.eq(branch.id)。 and(manager.name.eq("Alice"))); (显然在 select 调用中选择你想要的)
-
org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join!
标签: querydsl