【发布时间】:2015-04-04 13:43:22
【问题描述】:
假设我有两个表Task 和Company。 Company 具有列 id 和 name。 Task 有两列 customerId 和 providerId 链接回 id 列 Company。
如何使用 Querydsl 加入 Company 表两次,以便获得 customerId 和 providerId 指定的每个公司的 name?
可能更好地解释我正在尝试的代码:
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"),但没有奏效。有谁知道如何做到这一点?
【问题讨论】: