映射键上的HQL查询:未找到列:SQLGrammarException

时间:2010-12-03 15:14:11

标签: hibernate hql

我有以下型号:

class A{
    Map<String, Integer> tags
}

class B{
   A a;
}

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

我发出以下HQL查询

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

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

  

和tags2_.tags_idx ='the_value'

,异常消息是

  

未找到列:TAGS2_.TAGS_IDX

不幸的是,别名tags2_先前未在语句中声明,这导致异常。

有什么想法吗?

此致

2 个答案:

答案 0 :(得分:1)

不确定缺席的别名,但我猜你在这种情况下需要以下语法:

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

另见:

答案 1 :(得分:0)

你能尝试这样的事吗?

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

或者也许:

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