假设我有两个表Task
和Company
。Company
有列id
和name
。Task
有两列customerId
,providerId
它们链接回的id
列Company
。
使用Querydsl如何在Company
表上加入两次,以便可以获取和name
指定的每个公司的?customerId
providerId
也许可以更好地解释我正在尝试的代码:
Configuration configuration = new Configuration(templates);
JPASQLQuery query = new JPASQLQuery(this.entityManager, configuration);
QTask task = QTask.task;
QCompany customer = QCompany.company;
QCompany provider = QCompany.company;
JPASQLQuery sql = query.from(task).join(customer).on(customer.id.eq(task.customerId))
.join(provider).on(provider.id.eq(task.providerId));
return sql.list(task.id, customer.name.as("customerName"), provider.name.as("providerName"));
生成SQL:
select task.id, company.name as customerName, company.name as providerName from task join company on company.id = task.customerId
我真的很希望这样:
select task.id, customer.name as customerName, provider.name as providerName from task join company as customer on customer.id = task.customerId join company as provider on provider.id = task.providerId
我不知道如何为要加入的表加上别名,以便区分客户名和提供商名。我尝试这样做,new QCompany("company as provider")
但是没有用。有人知道该怎么做吗?
如果您需要变量,请执行以下操作
QCompany customer = new QCompany("customer");
QCompany provider = new QCompany("provider");
重新分配默认变量QCompany.company
无济于事
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句