загрузка объектов из списка составных идентификаторов в nhibernate - PullRequest
0 голосов
/ 24 июня 2011

что я хочу сделать, это создать HQL-запрос, который принимает список идентификаторов и возвращает список загруженных объектов. Через некоторое время я обнаружил, что что-то подобное может работать

from Foo foo where foo.ID in (:IdList)

Однако, это работает только для одиночных идентификаторов, потому что, когда я пытаюсь использовать его для составных идентификаторов, приложение выдает следующее исключение:

System.ArgumentOutOfRangeException: индекс был вне диапазона. Должен быть неотрицательным и меньшим, чем размер коллекции. Имя параметра: индекс

Я невежественен ...

Я создал собственный тип для своего объекта id, надеясь, что смогу объяснить hibernate, как его использовать, но это не сработало.

Так у вас есть идеи?

спасибо

1 Ответ

0 голосов
/ 13 июля 2011

я не могу вспомнить sqlquery, который может это сделать (In не могу принимать пары в качестве входных данных, насколько я знаю)

Достаточно ли этого (на моей голове не могу проверить это прямо сейчас)?

var query = "from Foo foo where ";

for (int i = 0; i < idlist.Count; i++)
{
    query += "OR foo.ID = :p" + i;
}

var hqlquery = session.CreateQuery(query);
for (int i = 0; i < idlist.Count; i++)
{
    hqlquery.SetParameter("p" + i, idlist[0]);
}
...