【问题标题】:How to write sub join in HQL如何在 HQL 中编写子连接
【发布时间】:2019-03-12 10:53:18
【问题描述】:

我是 hibernate 和 HQL 的新手,想将此 sql 转换为 HQL 查询 无法在休眠中将带有 sub select 的 Sub Join 转换为 HQL

     SELECT  m.ID, SUM(CASE WHEN pl.IN_OUT = 1
                       THEN pl.INP
                  ELSE 0 END + 
                  CASE WHEN MRL.IN_OUT = 1
                       THEN MRL.INP
                  ELSE 0 END +
                  CASE WHEN sl.IN_OUT = 1
                       THEN sl.INP
                  ELSE 0 END) INP

FROM   MATERIAL                      AS m
      LEFT JOIN (SELECT pl1.MATERIAL_ID, 
                   pl1.IN_OUT, 
                   pl1.WAREHOUSE_ID,
                   SUM(CASE WHEN PL1.IN_OUT = 1 THEN PL1.QUANTITY ELSE 0 END) 
        INP, 
                   SUM(CASE WHEN PL1.IN_OUT = 2 THEN PL1.QUANTITY ELSE 0 END) 
          OUTP 
            FROM PURCHASE_LINE pl1
            GROUP BY pl1.MATERIAL_ID, pl1.IN_OUT, pl1.WAREHOUSE_ID
      ) as pl ON PL.MATERIAL_ID = M.ID AND PL.WAREHOUSE_ID = W.ID

     WHERE m.ID = 273607     
  GROUP BY m.ID

【问题讨论】:

    标签: hibernate spring-boot hql


    【解决方案1】:

    HQL 和 JPQL 不支持派生表。您可以将派生表转换为几个相关的子查询,但我认为您最好编写一个原生 SQL 查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 2016-01-17
      相关资源
      最近更新 更多