Вызов хранимой процедуры в спящем режиме - PullRequest
0 голосов
/ 16 сентября 2018

Один из способов вызова хранимой процедуры в hibernate указан ниже, но моя процедура в реальной среде внутренне вызывает ссылку на БД, поэтому, очевидно, не будет класса, связанного с процедурой.

То, что я хочу сказать, это

addEntity(Stock.class): здесь Stock - это класс, с которым createSQLQuery() отобразит свои выходные данные, но в моем случае не будет никакого класса, так как моя процедура обращается к DB Link (Другие таблицы базы данных).

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. Как мне вызвать эту процедуру без (Entity) Class?

  2. Моя процедура заключается в выборе 10 столбцов из других баз данных через Ссылка на БД и возвращение ее данных, которые я помещаю в список после выполнение процедуры. Как реализовать вышеуказанный сценарий в Hibernate?

1 Ответ

0 голосов
/ 16 сентября 2018

Вы можете использовать SimpleJdbcCall как этот

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate);

simpleJdbcCall.withProcedureName("GetStocks");
simpleJdbcCall.declareParameters(new SqlParameter("stockCode",
            OracleTypes.VARCHAR));

MapSqlParameterSource map = new MapSqlParameterSource();
map = new MapSqlParameterSource();
map.addValue("stockCode", "7277");

Map<String, Object> result = simpleJdbcCall.execute(map);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...