В какой форме org.hibernate.Query возвращает результат при вызове метода list? - PullRequest
2 голосов
/ 24 марта 2011

Мой Java-код:

Query q=session.createSQLQuery(" { call procedureSample(?) }");

List list=q.list();

Процедура procedureSample возвращает три значения, например (int, string, int).

  1. Как я могуполучить результаты?

  2. Нужно ли создавать боб?Если да, то как я могу назвать поля в bean-компоненте, так как результаты int в моей процедуре являются функциями, такими как count?

  3. Как я могу получить результаты из списка list instance?

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Ваш список будет содержать 3 элемента.Вы можете перебрать список и получить значения.

Например.

Query q=session.createSQLQuery(" { call procedureSample(?) }");

List list=q.list();

Iterator iter=list.iterator();
while(iter.hasNext()) {
    System.out.println(iter.next());
}

В этом случае, я думаю, нет необходимости создавать бин.

1 голос
/ 24 марта 2011

То, что вы получили бы, это List<Object[]>, то есть список строк, каждая из которых представлена ​​в виде массива объектов.

Способ доступа к результатам процедуры зависит от того, будут ли результаты возвращены в виде одной строки с 3 столбцами (в этом случае вы получите доступ к 3-му элементу как list.get(0)[2]) или как 3 строки с одним столбцом (при доступе к 3-му элементу) тогда будет list.get(2)[0]).

Изменить: Обратите внимание, что это предполагает, что у вас есть Java 5+ и приведение list к List<Object[]>.

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