Hibernate Получение вывода из универсального курсора - PullRequest
1 голос
/ 27 марта 2012

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

Есть ли способ получить объект результирующего набора ниже, чем список?
Я могу получить соединение с фабрики сессий и использовать вызываемыйзаявление.это хорошая практика?

Query query = session.createSQLQuery(
    "CALL GetStocks(:stockCode)")
    .addEntity(Stock.class)
    .setParameter("stockCode", "7277");

List result = query.list();
for(int i=0; i<result.size(); i++){
    Stock stock = (Stock)result.get(i);
    System.out.println(stock.getStockCode());

1 Ответ

0 голосов
/ 27 марта 2012

Hibernate предоставляет ScrollableResults для работы с курсором. Вот пример из API документов .

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

ScrollableResults customers = session.getNamedQuery("GetCustomers")
    .setCacheMode(CacheMode.IGNORE)
    .scroll(ScrollMode.FORWARD_ONLY);
int count=0;
while ( customers.next() ) {
    Customer customer = (Customer) customers.get(0);
    customer.updateStuff(...);
    if ( ++count % 20 == 0 ) {
        //flush a batch of updates and release memory:
        session.flush();
        session.clear();
    }
}

tx.commit();
session.close();

Здесь - еще один пример.

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