在休眠状态下调用存储过程

时间:2018-09-16 07:01:10

标签: java spring oracle hibernate spring-mvc

下面列出了在休眠状态下调用存储过程的一种方法,但是我在现实环境中的过程在内部调用DB链接,因此显然不会有与该过程相关联的类。

我的意思是

addEntity(Stock.class):这里StockcreateSQLQuery()用来映射其输出的类,但是在我的情况下,因为我的过程正在访问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. 如何在没有(实体)类的情况下调用该过程?

  2. 我的过程是通过以下方式从其他数据库中选择10列 DB链接并返回我放入列表后的数据 执行程序。如何在中实现上述方案 休眠吗?

1 个答案:

答案 0 :(得分:0)

您可以像这样使用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);