当前位置: 首页 > 知识库问答 >
问题:

Querydsl在同一表上多次联接

姬烨磊
2023-03-14

假设我有两个表taskcompanycompany包含idname列。Task有两列CustomerIDProviderID,它们链接回CompanyID列。

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"));
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

共有1个答案

柳胜
2023-03-14

如果需要to变量,只需执行以下操作

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

重新分配默认变量qcompany.company没有帮助

 类似资料:
  • 问题内容: 我有两张表。我试图将下面的两个示例表与表1结合起来,两次引用表2。例如,如果我查看表1:第2组和成员7,则应在表2中查找ID,并提供以下输出: 表1 表2 有什么建议吗?谢谢 问题答案: SELECT Table_1.*, g.Name, m.Name FROM Table_1 INNER JOIN Table_2 AS g ON Table_1.Group=g.ID INNER JO

  • 我试图将QueryDSL与Spring Data JPA一起使用。

  • 问题内容: 当尝试通过Spring使用Mockito时,通过bean声明创建Mock对象… …我多次调用Mockito。时发现一些奇怪的行为,而没有重置Mock对象,例如: 一旦在测试期间(在同一模拟上)多次调用此代码(“ Mockito.when”),测试就会失败并显示错误(BadSqlGrammerException,即使实际上是预期的异常,我也会失败- 如果我不抛出异常,则手动抛出该异常就可

  • 问题内容: 因此,我收到此错误:#1066-不是唯一的表/别名:“购买” 我正在尝试执行以下操作: 空白表包括: 付款表包括: 采购表包括: 票务表包括: MCO_Blank表包含: 我不确定如何进行这项工作。 问题答案: 您需要使用表别名。您在子句中多次提到同一张表。查询是这样的: 我不得不猜测别名应该使用哪种付款方式和购买方式。这些在and子句中可能不正确。

  • 问题内容: 我有一个班级用户。用户可以与许多其他用户成为朋友。这种关系是相互的。如果A是B的朋友,那么B是A的朋友。我也希望每个关系都存储其他数据,例如两个用户成为朋友的日期。因此,这是同一表上具有多列的多对多关系。我知道应该创建一个中产阶级友谊(包含两个用户ID和日期列)。但是我在将其与Hibernate映射时做得不够。使我停滞不前的是映射到了同一张表。如果多对多关系是在两个不同的表之间,则可以

  • 问题内容: 我有两个桌子和。表具有字段和其他几个字段。表具有3个字段: 是固定的值枚举。例如,它可以是,或。 我需要进行查询,其结果将是4列: ,对,对,对 如果不存在用于相应值在表然后NULL值应在相应的列中显示。 例: 结果应该是: 我尝试了3次左联接表,但无法弄清楚如何排列输出 问题答案: 您需要使用多个: 这是一个示例:SQL Fiddle。