Спящий режим: несколько наборов результатов

из того, что я прочитал в документации/онлайн Hibernate, похоже, что Hibernate не может обрабатывать несколько наборов результатов. Я хочу сделать вызов базы данных MySQL в приложении, основанном на Hibernate, которое вернет несколько наборов результатов.

Какие решения вы использовали, которые «хорошо работают» с Hibernate, имея в виду, что, вероятно, это будет единственный вызов, при котором будет возвращено несколько наборов результатов?

Спасибо!


person Ryan P.    schedule 28.01.2011    source источник


Ответы (3)


Насколько я знаю, вы не можете обрабатывать несколько наборов результатов с помощью спящего режима. Но я не думаю, что вам это нужно - несколько наборов результатов редко могут сопоставляться с результатами, такими как List<FooEntity>. Вы можете использовать простой JDBC для запросов, возвращающих несколько наборов результатов, и обрабатывать их вручную.

person Bozho    schedule 28.01.2011
comment
Это также невозможно с простым JDBC. Он также возвращает только один набор результатов для каждого запроса SELECT. - person BalusC; 29.01.2011
comment
@BalusC - есть скачать .oracle.com/javase/6/docs/api/java/sql/ Statement.getMoreResults() - я думаю, что получает следующий набор результатов - person Bozho; 29.01.2011
comment
О, хранимые процедуры могут возвращать несколько наборов результатов. Я никогда не использовал их, хотя. - person BalusC; 29.01.2011
comment
@BalusC - я тоже никогда их не использовал, но узнал о них, когда спящий режим не смог правильно с этим справиться (из устаревшей базы данных) - person Bozho; 29.01.2011
comment
Спасибо, ребята, JDBC выглядит жизнеспособной альтернативой. Я работаю над подключением Spring JDBC для некоторых дополнительных функций. - person Ryan P.; 01.02.2011

Я уверен, что вы уже видели это @Ryan, но ради кого-то еще (например, меня):

Для сервера Sybase или MS SQL применяются следующие правила:

Процедура должна возвращать результирующий набор. Обратите внимание, что, поскольку эти серверы могут возвращать несколько наборов результатов и количество обновлений, Hibernate будет повторять результаты и принимать первый результат, являющийся набором результатов, в качестве возвращаемого значения. Все остальное будет отброшено.

Взято из здесь.

person javamonkey79    schedule 18.10.2011

Если наборы результатов поступают из хранимой процедуры, их можно получить с помощью класса javax.persistence.StoredProcedureQuery. Однако убедитесь, что все наборы результатов состоят из одних и тех же столбцов в одном и том же порядке. Ошибка в спящем режиме заставляет его ожидать, что все наборы результатов будут иметь ту же форму, что и первый набор результатов.

person Maurice    schedule 15.05.2020