【问题标题】:How to reference a map name for a subquery in an HQL order by clause如何在 HQL order by 子句中引用子查询的映射名称
【发布时间】:2024-04-27 06:45:01
【问题描述】:

我有这样的 HQL 语句:

select new map (f1 as field1, (select ...) as field2)
from ...
where ...
order by field2;

它无法显示“未知列 'field2'”。我普遍遇到这种情况,当使用“new map”语句时,我无法按字段顺序引用地图名称。

由于 HQL 子查询仅允许在 select 或 where 子句中使用,因此我也不能将子查询复制到 order by 子句(无论如何这不会那么好)。

我是否遗漏了什么,或者我必须避免使用地图?

【问题讨论】:

  • 有趣的问题。从未遇到过这种情况,但我很想将其视为一个错误。
  • 你是对的 - 请参阅下面的答案!

标签: sql hibernate reference hql subquery


【解决方案1】:

我找到了,这确实是一个错误(五年后仍未解决!),无论我在“新地图”中使用别名还是以传统方式使用别名都没有关系。但是有一个对我有用的解决方法:只需使用col_0_0_col_1_0_ 等引用该列。这也适用于“新地图”。

更多信息请参见this bug description

【讨论】:

  • 好收获。感谢您发布此信息。并且 +1