2014-09-18 3 views
0

글쎄, 나는 다음 구조의, PL/SQL 기능을 가지고있다 :Hibernate에서 어떻게 이런 종류의 함수를 호출 할 수 있습니까?

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 유형 없음 방언 매핑 : -10

답변

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

함수가를 반환하므로, 빈에서 MappedBean이라고 말하면 함수에서 반환 된 데이터가 저장됩니다.

+0

MappedBean은 Hibernate 엔터티 여야합니까? – Tony

+0

예 Hibernate 엔티티. –

+0

몇 가지 세부 사항을 추가했습니다. 봐. – Tony

관련 문제