Присоединитесь к карте и обратитесь к ее ключу / значению в HQL - PullRequest
5 голосов
/ 11 июня 2010

Предположим, у меня есть карта:

        <map name="externalIds" table="album_external_ids">
            <key column="album_id" not-null="true"/>
            <map-key-many-to-many class="Major" column="major_id"/>
            <element column="external_id" type="string" not-null="true"/>
        </map> 

Как мне сделать HQL, означающий «выбирать объекты, в которых идентификатор ключа карты ==: foo и значение карты ==: bar»?

Я могу присоединиться к нему, используя select album from Album album join album.externalIds ids Но как мне тогда обратиться к ключу и значению идентификаторов? ids.key.id =: foo и ids.value =: bar не работает, и hibernate doc об этом молчит.

Наивные подходы, которые не работали:

select album 
from Album album 
join album.externalIds externalId
    where index(externalId).id = :foo and externalId = :bar

и

select album 
from Album album 
join album.externalIds externalId 
join index(externalId) major
    where major.id = :foo and externalId = :bar

1 Ответ

5 голосов
/ 03 декабря 2010

Я считаю, что ваш запрос должен выглядеть следующим образом:

select album from Album album where album.externalIds['foo'] = 'bar'

Надеюсь, это поможет,

Винсент Жигер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...