下面列出了在休眠状态下调用存储过程的一种方法,但是我在现实环境中的过程在内部调用DB链接,因此显然不会有与该过程相关联的类。
我的意思是
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());
}
我的问题
如何在没有(实体)类的情况下调用该过程?
我的过程是通过以下方式从其他数据库中选择10列 DB链接并返回我放入列表后的数据 执行程序。如何在中实现上述方案 休眠吗?
答案 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);