【问题标题】:HQL: Unknown column in where clauseHQL:where 子句中的未知列
【发布时间】:2016-08-15 10:27:31
【问题描述】:

我正在尝试计算 hql 查询的行数。我收到 TypeOfPermission 列不存在的警告。这让我感到奇怪,就像之前的查询确实有效一样。下面的行给了我 2 行(如预期的那样)

from ClientIdentity c left join fetch c.Permissions p where p.TypeOfPermission = :permissionType;

但是使用以下计数查询,查询失败,因为现在不再识别列 TypeOfPermission。

countQuery = "select count(*) from ClientIdentity c left join fetch c.Permissions p where p.TypeOfPermission = :permissionType";
long count = countQuery.UniqueResult<long>();

【问题讨论】:

    标签: mysql select count hql


    【解决方案1】:

    你改变了:

      c.Permissions to Permissions
    

    【讨论】:

    • 不幸的是,这会导致“预期加入的路径!”因为 Permission 实体不再被识别。
    • 获取实际行时必须使用 'fetch' 关键字。从我的原始计数查询中删除“获取”似乎可以解决问题。不知道为什么会这样。
    【解决方案2】:

    使用“Count(*)”时,不需要“fetch”。

    countQuery = "select count(*) from ClientIdentity c left join c.Permissions p where p.TypeOfPermission = :permissionType";
    long count = countQuery.UniqueResult<long>();
    

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2021-09-19
      • 2020-06-28
      相关资源
      最近更新 更多