hibernate - 如何在 HQL 中编写子连接
问题描述
我是 hibernate 和 HQL 的新手,想将此 sql 转换为 HQL 查询无法将带有 sub select 的 Sub Join 转换为 hibernate 中的 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
解决方案
HQL 和 JPQL 不支持派生表。您可以将派生表转换为几个相关的子查询,但我认为编写本机 SQL 查询会更好。
推荐阅读
- c++ - C++函数优化问题
- msbuild - 在多目标构建中使用 $(OutputPath)?
- bash - 从 shell 脚本运行 docker 和 maven 时出错
- php - PHP / imagecolorat:在 RGB 中转换颜色但缺少颜色
- vb.net - 应用程序内存不足加载缩略图
- python - Python中concurrent.futures的多线程问题
- javascript - 如何创建一个 jquery 脚本来计算选中的复选框的数量
- visual-studio-code - 使用 C/C++ 扩展的不一致的 clang 格式应用程序
- c# - 我在视图中使用包含项目的列表,但它会引发转换错误,为什么?
- python - 全局语句无法按预期工作,无法在类中访问