【问题标题】:HQL Query - issue in where clause by using alias nameHQL 查询 - 使用别名在 where 子句中出现问题
【发布时间】:2015-04-03 10:46:15
【问题描述】:

我的 where 子句中有一个异常。我有以下 HQL 查询:

SELECT  a.addressType as  myowncolumn
FROM Address a
WHERE myowncolumn = 1

我收到以下错误消息: where 子句中的未知列“myowncolumn”

如果我删除 where 子句,则查询有效。 怎么了?

请你帮帮我。

【问题讨论】:

  • 请显示地址实体的类别。
  • 这个类只有 postalCode 和 city 和 addressType.... 这不是一个巨大的类... 我没有像 myowncolumn 这样的列。在现实世界中,我想在 select 语句中计算一些东西。但在此之前,我必须为别名解决这个问题....在阅读中,WHERE 子句是 SQL 查询中的第一步,它将被验证。之后是 select 子句。但是 where 子句找不到任何“myowncolumn”

标签: mysql hibernate hql


【解决方案1】:

您的实体“必须知道”(通过字段链接)关于 myowncolumn。例如,如果 Address 引用了 City 而它们引用 Country,那么这个 hql 查询将是正确的:

select adr from Address a where a.city.country.name='UK';

【讨论】:

    【解决方案2】:

    即使在纯 SQL 中也不起作用,而且您的评论是正确的,即从内到外/从右到左验证 SQL。这就是无法识别myowncolumn 的原因。

    【讨论】:

    • 比我得到“无法解析属性:我自己的地址列”
    • 这个查询没问题,我在 Hibernate 4 上工作得很好。你能发布完整的代码吗?你是怎么称呼它的?
    • 在您编辑后,我的回答不再成立。我已经完全编辑了它。
    • 有什么解决办法吗?我也尝试使用 HAVING。但我不能在 HQL 中使用 HAVING?在这种情况下我也遇到了错误??
    • HAVING 必须以GROUP BY 开头,不能只用它代替WHERE。我一直在努力完成这项工作,但没有成功。如果有解决方案,我不知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多