比方说,我有两个表Task和Company.Company有列id和name.Task有两列customerId,providerId并链接回id列Company.
使用Querydsl我如何在Company桌面上加入两次,这样我就可以获得name由customerIdand 指定的每个公司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"));
Run Code Online (Sandbox Code Playgroud)
哪个生成SQL:
select task.id, company.name as customerName, company.name as providerName from task join company on company.id = task.customerId
Run Code Online (Sandbox Code Playgroud)
我真的很喜欢它:
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
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何对我加入的表进行别名,因此我可以区分客户和提供商名称.我尝试过,new QCompany("company as provider")但那没用.任何人都知道如何做到这一点?
Tim*_*per 23
如果您需要变量,请执行以下操作
QCompany customer = new QCompany("customer");
QCompany provider = new QCompany("provider");
Run Code Online (Sandbox Code Playgroud)
重新分配默认变量QCompany.company没有帮助
| 归档时间: |
|
| 查看次数: |
6873 次 |
| 最近记录: |