将左连接 SQL 查询转换为 HQL

Convert left join SQL query to HQL

我有以下 SQL 查询,想知道如何将其转换为 HQL。语法如何?

select pr.PROD_ID, pr.ORG_UNIT_ID, pr.QTY, pr.ID from PROD_ST pr
left join
(select * from ORG_UNIT where code like '25%') org
on org.id = pr.ORG_UNIT_ID
where org.id = pr.ORG_UNIT_ID

首先,你的 Sql LEFT JOIN,确实是 INNER JOIN,因为你在 WHERE 子句中输入了:

org.id = pr.ORG_UNIT_ID

第二,在你的 SELECT 字段列表中你只显示 pr 字段,所以你可以像这样用 EXISTS 函数转换你的 LEFT JOIN(我假设你有每个 table同名的实体):

SELECT pr.PROD_ID, pr.ORG_UNIT_ID, pr.QTY, pr.ID from PROD_ST pr
WHERE EXISTS(
    SELECT 'ORG_UNIT'
    FROM ORG_UNIT org
    WHERE org.code like '25%'
    AND org.id = pr.ORG_UNIT_ID
)