Как перебрать вложенный список - PullRequest
3 голосов
/ 22 августа 2011

Привет, у меня есть запрос гибернации, который дает мне список с типом List<List<integer>>. Как я могу повторить это? Мой запрос в спящем режиме:

String SQL_QUERY = "select DISTINCT cbl.franchiseId,cbl.resellerId from 
     CustomerBusinessLocation cbl where cbl.cmcustLocId in (:locationId)";

Query query = getSession().createQuery(SQL_QUERY); 

query.setParameterList("locationId", customerLocId);

List<List<Integer>> rc_list = query.list();

В качестве альтернативы, есть ли другой способ легко получить эти данные?

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

Этот запрос не возвращает List<List<Integer>>. Возвращает List<Object[]>. Массивы Object[] содержат один элемент на каждое запрошенное поле. В вашем случае каждый Object[] будет содержать franchiseId в индексе 0 и resellerId в индексе 1.

Это, конечно, объясняется в справочной документации .

Итерация должна выглядеть следующим образом:

List<Object[]> rows = query.list();
for (Object[] row : rows) {
    Integer franchiseId = (Integer) row[0];
    Integer resellerId = (Integer) row[1];
    // ...
}
3 голосов
/ 22 августа 2011

Чтобы перебрать вложенные списки, вы просто вкладываете циклы.

for(List<Integer> list : rc_list){
    for(Integer i : list){
      //do stuff
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...