Pessoal estou com problemas para chamar uma função pelo hibernate. Eu consigo chamar uma procedure que retorna um cursor, mas não consigo chamar uma function. Não sei o pq do erro.
Eis as minhas chamadas e meus mapeamentos:
Função no Oracle:
FUNCTION INC_TIPO_LOCAL RETURN NUMBER IS
WINCVALUE NUMBER;
BEGIN
SELECT NVL(MAX(CD_TIPO_LOCAL),0) +1
INTO WINCVALUE
FROM BOP_TIPO_LOCAL;
RETURN WINCVALUE;
END;
Mapeamento no hibernate:
<hibernate-mapping>
<sql-query name="incTipoLocal" callable="true">
<return-scalar column="INC_TIPO_LOCAL" type="long"/>
{ ? = call PA_TIPO_LOCAL.INC_TIPO_LOCAL() }
</sql-query>
</hibernate-mapping>
Chamada na classe:
public void incTipoLocal() {
Query q = ManageDAO.getSession().getNamedQuery("incTipoLocal");
List i = q.list() ;
System.out.println( i.get(1) );
}
public static void main(String[] args) {
new TipoLocalDAO().incTipoLocal();
}
Erro:
Hibernate:
{ ? = call PA_TIPO_LOCAL.INC_TIPO_LOCAL() }
13:01:48,687 WARN JDBCExceptionReporter:100 - SQL Error: 6550, SQLState: 65000
13:01:48,687 ERROR JDBCExceptionReporter:101 - ORA-06550: line 1, column 13:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Exception in thread “main” org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2231)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)
at br.es.csi.cad.dao.TipoLocalDAO.incTipoLocal(TipoLocalDAO.java:27)
at br.es.csi.cad.dao.TipoLocalDAO.main(TipoLocalDAO.java:35)
Caused by: java.sql.SQLException: ORA-06550: line 1, column 13:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Desde já agradeço a colaboração de todos.