hibernate - Hibernate HQL 无法识别 sub select 中的表别名,Insert Into ... Select ... where column = (Select...)
问题描述
我有这个 HQL,你会注意到它包含同一张表 TABLE_2(tab2 和 tab5)的两个实例:
INSERT INTO TABLE_1 (column, column, column,
column, column, column, column, column)
SELECT column, column, column,
column, column, column, column, column
FROM TABLE_2 as tab2 INNER JOIN tab2.message as tab3 INNER JOIN tab3.service as tab4, TABLE_2 as tab5
WHERE tab2.dateChgt = (SELECT MAX(dateChgt) FROM TABLE_2 WHERE code = :pCd1 AND message.num = tab3.num GROUP BY message.num)
AND tab5.dateChgt = (SELECT MAX(dateChgt) FROM TABLE_2 WHERE code = :pCd2 AND message.num = tab3.num GROUP BY message.num)
AND tab2.code = :pcode1
AND tab5.code = :pcode2
AND tab2.message.num = tab5.message.num
AND tab2.dateChgt <= tab5.dateChgt
AND tab5.dateChgt >= :pDateDebRech
AND tab5.dateChgt <= :pDateFinRech
AND tab3.typeMessage = :pTypeMessage
GROUP BY tab3.num, tab4.column, tab4.column, tab3.column;
所以错误是:“t_message”表的 FROM 子句中的条目引用无效。提示:也许你想引用表“tmessage1_”的别名。
问题是我已将别名 tab3 赋予 t_message(HQL 中的 tab2.message),但当我调用 tab3.num 时,HQL 不会重新识别子 Select 中的别名 tab3。
令人惊讶的是,当我删除 Insert into 语句并将查询转移到简单的 Select 查询时,问题就消失了。我也尝试在 PgAdmin 上运行查询(数据库是 PostgreSql),它可以工作,所以我想问题来自 HQL。
有任何想法吗 ?
多谢你们
解决方案
推荐阅读
- macros - 如何降低复杂性并自动化我构建结构的方法?
- r - 时间序列分解失败,“时间序列没有或少于 2 个周期”
- python - 在熊猫中按周分组数据透视表日期
- c++ - 仅使用单个参数调用具有多个参数的模板化类
- c# - Xamarin HttpClient.GetStringAsync 在 Xamarin.Android 上不起作用
- python - 附加功能不会向熊猫数据框添加任何内容
- css - 尝试通过 CSS 删除 ID
- python - 序列化数据后返回数字的名称
- automation - 如何创建重构工具?
- powerapps - 使用电源应用程序 Patch() 函数调用 WebAPI