Kab*_*n S 2 java sql spring stored-procedures hibernate
我无法使用会话工厂从java hibernate调用我的存储过程
我编写了一个sql过程,它接受5个参数并返回一个在MS SQL studio中正常工作的结果集
EXEC SlaGrid @appID=245,@fromYear=2012,@toYear=2013,@fromMon=1,@toMon=12 --- sql
EXEC SlaGrid @applID=:applID,@fromYear=:fromYear,@toYear=:toYear,@fromMon=:fromMon,@toMon=:toMon --hibernate
Run Code Online (Sandbox Code Playgroud)
我正在设置上述查询的参数
String queryString = "EXEC SlaGrid @applID=:applID,@fromYear=:fromYear,@toYear=:toYear,@fromMon=:fromMon,@toMon=:toMon"
Query query = sessionFactory.getCurrentSession().createSQLQuery(queryString);
//set query parameters here
query.list() --- giving sql grammer exception
Run Code Online (Sandbox Code Playgroud)
您可以在hibernate会话上使用可调用语句.
Connection con = getSessionFactory().getCurrentSession().connection();
/**
* Amend to include your parameters and proc
*/
CallableStatement cs = con.prepareCall( "{ call myprocedure }");
cs.execute();
Run Code Online (Sandbox Code Playgroud)
然后创建一个SessionFactory并打开一个会话
CallableStatement callableStatement = session.connection().prepareCall("call GetMarketDataCDS(?,?)");
callableStatement.setString(1,"JPM");
callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
callableStatement.execute();
ResultSet resultSet=(ResultSet) callableStatement.getObject(1);
Run Code Online (Sandbox Code Playgroud)
这里我使用的是oracle,我的第一个参数是IN参数,第二个是OUT,它只是返回多行的结果集.然后在最后一行,我们获得带有所有行的ResultSet,然后您可以遍历行.
| 归档时间: |
|
| 查看次数: |
44944 次 |
| 最近记录: |