Получение результата запроса Hibernate в виде набора результатов вместо списка - PullRequest
6 голосов
/ 14 марта 2011

Хэя, Я новичок в спящем режиме. Я должен сказать, что это действительно упрощает все для запроса SQL. Тем не менее, манипулирование возвращаемым результатом является для меня головной болью в данный момент.

Результат возвращается в виде списка. Большую часть времени я действительно хочу, чтобы результат был в наборе результатов, чтобы я мог легче манипулировать им, так как используя набор результатов, вы можете указать значение по имени столбца или по индексу. В Списке я в значительной степени принадлежу своему собственному noobity.

В некоторых случаях я могу получить список в таблицу данных JSF, а затем просто вызвать участника напрямую. Я не всегда могу сделать это. Не спрашивай меня почему. @. @ вращающаяся голова.

Есть ли способ получить набор результатов вместо списка для спящего режима?

Ответы [ 3 ]

4 голосов
/ 04 октября 2011

Немного старая тема, но я не могу устоять:

    // Code for iterating over a list of objects
    for(MappedClass mappedCless : list){
        String name = mappedClass.getName();
        String id = mappedClass.getId();
        // further logic
    }
2 голосов
/ 15 марта 2011

Хорошо, как-то мне удалось заставить его работать! Я так счастлив! Для тех, кто пытается выяснить, как манипулировать списком, возвращаемым запросом Hibernate, в основном то, что я сделал, было ..

//previous code
list = (List<MappedClass>)query.list();

Оттуда список должен содержать сопоставленный класс, и вы можете получить к нему доступ через итератор, а затем использовать getter для получения значения. Пример

//previous code
for (int i =0; i<list.size(); i ++) {
  String name;
  String id;
  name = list.get(i).getName();
  id = list.get(i).getId();

  //add your data manipulation here
}

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

1 голос
/ 16 марта 2016

Это может понадобиться, если у вас огромная база данных, и вы не можете поместить результаты List в память. Используйте scroll () вместо list ():

Query query = session.createQuery(query);
query.setReadOnly(true);
setFetchSize(Integer.MIN_VALUE); //MUST use Integer.MIN_VALUE, other value=fetch all
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY);
// iterate over results
while (results.next()) {
    Object row = results.get();
}
results.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...