В базе данных есть хранимая процедура
CREATE DEFINER=root@localhost PROCEDURE totabank()
select sum(summ) from summ_wallets
которая возвращает таблицей одну запись с суммой чисел. При помощи простой jdbc я могу сделать
ResultSet rs = statement.executeQuery("call totalbank()");
и потом условно пробежаться по нему циклом и достать int-овое значение как rs.getInt(1);
Подскажите, как это можно было бы сделать при помощи Hibernate? Сёрфил интернет, рабочего примера так и не нашёл. Получалось как-то достать объект, кажется Query, но при вызове у него метода toString() он выдавал дефолтную toString()-строку объекта, а мне бы хотелось достать значение числом или строкой.
// ранее получаем сессию хибернейта из фабрики сессий
org.hibernate.procedure.ProcedureCall call =
session.createStoredProcedureCall("totalbank");
org.hibernate.procedure.ProcedureOutputs callOutputs = call.getOutputs();
org.hibernate.result.Output output;
while ((output = callOutputs.getCurrent()) != null) { // проверяем наличие выходных значений
if (output.isResultSet()) { // если выходное значение результат запроса (некоторые процедуры могут возвращать количество обработанных строк, тогда вернет false)
List<Integer> result =
((org.hibernate.result.ResultSetOutput) output)
.getResultList();
// обработать результат
}
if (!callOutputs.goToNext()) // некоторые процедуры могут возвращать несколько последовательных результатов
break;
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости