如何在Hibernate中调用这种函数?

时间:2014-09-18 08:36:15

标签: java sql hibernate plsql

好吧,我有一个带有下一个结构的pl / sql函数:

function  Proc(SessionID SomeConst.TSessionID default null) return sys_refcursor is
  rc sys_refcursor

我对pl / sql没有任何经验,但现在我必须以某种方式调用它。我知道这种程序:

procedure LogOn(UserName in varchar2, Password in varchar2, SessionID out varchar2)
必须像这样调用

CallableStatement callableStatement = sessionFactory
                .getCurrentSession().connection()
                .prepareCall("call PREQUEST.LOGON(?,?,?)");
        callableStatement.setString(1, userName);
        callableStatement.setString(2, password);
        callableStatement.registerOutParameter(3, OracleTypes.VARCHAR);
        callableStatement.execute();
        return callableStatement.getString(3);

Proc没有out参数。怎么办?

UPD:

System.out.println(sessionFactory
                        .getCurrentSession()
                        .createSQLQuery(
                                "select Proc(:sessionId) from dual")
                        .setString("sessionId", sessionId).list().size());

我尝试了这个,但是控制台说:

  

org.hibernate.MappingException:没有JDBC类型的Dialect映射:-10

1 个答案:

答案 0 :(得分:1)

Query query=session.createSQLQuery("select Proc('"+param+"') from dual");
List<MappedBean> result=query.list();

由于你的函数返回sys_refcursor,所以得到一个bean MappedBean来保存从函数返回的数据。