Мне интересно, можно ли сопоставить именованный собственный запрос «на лету» вместо того, чтобы возвращать список Object [], а затем перебирать и настраивать объект таким образом. У меня есть вызов, который, как я знаю, плохо возвращает массивный набор данных, и я хочу иметь возможность сопоставить его прямо с моей сущностью. Могу ли я это сделать или мне придется продолжать перебирать набор результатов.
Вот чем я сейчас занимаюсь...
List<Provider> ObjList = (List<Provider>) emf.createNativeQuery(assembleQuery(organizationIDs, 5)).getResultList();
Это моя сущность, Список (моя сущность — поставщик). Обычно я просто возвращал бы List<Object[]>
, а затем прокручивал бы это, чтобы вернуть все объекты, настроить их как новых поставщиков и добавить их в список....
//List<Provider> provList = new ArrayList<Provider>();
/*for(Object[] obj: ObjList)
{
provList.add(this.GetProviderFromObj(obj));
}*/
Как видите, я закомментировал этот участок кода, чтобы попробовать. Я знаю, что вы можете сопоставить именованные нативные запросы, если поместите свой нативный запрос в сам объект, а затем вызовете его через createNamedQuery. Я бы сделал это так, но мне нужно использовать ключевое слово IN
оракула, потому что у меня есть список идентификаторов, которые я хочу проверить. Это не просто то, что нужно. И, как мы все знаем, нативные запросы плохо обрабатывают ключевое слово in
. Любой совет?
Эх, если бы только ключевое слово IN хорошо поддерживалось для NamedNativeQueries.