Можно передать объект Map в HQL - PullRequest
1 голос
/ 18 апреля 2011

Можно ли передать весь объект карты в HQL-запрос без итерации по нему? Я бы, если бы пришлось, но подумал, что может быть чище.

Например:

def aMap = ["foo":"bar", "bar":"foo"]

Foo.executeQuery("select p from p where p.bar in (:mapObj)", [mapObj: aMap])

Тогда он автоматически использует ключ на карте?

Если я попробую, то просто выдаст эту ошибку:

Помните, что порядковые параметры 1 на основе!

1 Ответ

2 голосов
/ 18 апреля 2011

Эта загадочная ошибка говорит, что executeQuery() просто ожидает другую карту в качестве последнего параметра - с другим типом данных или именами ключей.

Нет, она не будет автоматически использовать ключи карты.Если бы это произошло, я бы предположил, что вместо него следует использовать values().В любом случае, это было бы нелогично.

Так что просто используйте aMap.keySet(), это примерно абсолютный минимум накладных расходов, который вы можете получить от Map.

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