【问题标题】:HQL query on map key : Column not found: SQLGrammarException地图键上的 HQL 查询:找不到列:SQLGrammarException
【发布时间】:2010-12-03 15:14:10
【问题描述】:

我有以下型号:

class A{
    Map<String, Integer> tags
}

class B{
   A a;
}

我需要找到其关联的 A 在其标签映射中具有特定键值的 B 实例

我发出以下 HQL 查询

FROM B WHERE index(a.tags) = 'the_value'

不幸的是,这会产生 SQLGrammarException。 正在构建的查询有一个以以下结尾的 WHERE 子句:

和 tags2_.tags_idx='the_value'

异常消息是

未找到列:TAGS2_.TAGS_IDX

很遗憾,别名 tags2_ 之前没有在语句中声明,导致异常。

有什么想法吗?

问候

【问题讨论】:

    标签: hibernate hql


    【解决方案1】:

    不确定缺少的别名,但我想在这种情况下您需要以下语法:

    FROM B WHERE 'the_value' IN INDICES(a.tags)
    

    另请参阅:

    【讨论】:

      【解决方案2】:

      你能试试这样的吗?

      from B b join b.a a where index(a.tags) = 'the_value'
      

      或许:

      from B b where index(b.a.tags) = 'the_value'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 2015-10-06
        • 2011-05-18
        • 1970-01-01
        相关资源
        最近更新 更多