如何解决Hibernate HQL无法在sub select,Insert Into ... Select ...其中column =选择...中识别表别名
我有这个HQL,您会注意到它包含相同表TABLE_2的两个实例(tab2和tab5):
INSERT INTO TABLE_1 (column,column,column)
SELECT 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,tab3.column;
因此,错误是:“ t_message”表的FROM子句中的条目无效引用。 提示:也许您想引用表“ tmessage1_”的别名。
问题是我给t_message(HQL中的tab2.message)赋予了别名tab3,但是当我调用tab3.num时,HQL不会重新识别子Select中的别名tab3。
令人惊讶的是,当我删除Insert into语句并将查询转移到简单的Select查询时,问题消失了。我也尝试在PgAdmin(数据库为PostgreSql)上运行查询,它有效,所以问题出在我想的HQL。
有什么想法吗?
谢谢大家
解决方法
这很可能是Hibernate的错误。您应该在https://hibernate.atlassian.net/和一个测试案例中创建一个问题:https://github.com/hibernate/hibernate-test-case-templates/blob/master/orm/hibernate-orm-5/src/test/java/org/hibernate/bugs/JPAUnitTestCase.java
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。