Querydsl присоединиться к одной таблице несколько раз

допустим, у меня есть два стола Task и Company. Company и колонки id и name. Task имеет две колонки customerId и providerId которая ссылка обратно на на 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") но это не сработало. Кто-нибудь знает, как это сделать?

1 ответов


Если вам нужны переменные, просто сделайте следующее

QCompany customer = new QCompany("customer");
QCompany provider = new QCompany("provider");

переназначение переменной по умолчанию QCompany.company не помогает