2010-12-03 60 views
0

我有以下型號:HQL查詢:列未找到:SQLGrammarException

class A{ 
    Map<String, Integer> tags 
} 

class B{ 
    A a; 
} 

我需要找到B的情況下,其中其相關聯的在它的標籤的某些關鍵值映射

我發出以下HQL查詢

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

不幸的是,這會產生一個SQLGrammarException。 正在構建的查詢具有與結尾的WHERE子句:

和tags2_.tags_idx = 'the_value'

和異常消息是

柱未找到:TAGS2_。 TAGS_IDX

不幸的是,別名tags2_以前沒有在聲明中聲明,這導致了th例外。

任何想法?

問候

回答

0

不能確定缺席別名,但我猜你需要在這種情況下,語法如下:

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

參見:

0

你可以嘗試這樣的事情嗎?

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

或許:

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