将左连接 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
)
我有以下 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
)