Java 纯SQL vs Hibernate(如何在Hibernate中接收输出?)

Java 纯SQL vs Hibernate(如何在Hibernate中接收输出?),java,sql,oracle,hibernate,Java,Sql,Oracle,Hibernate,我在Oracle内部调用一个存储过程,它有11个输入和3个输出,在Oracle SQL developer内部,它工作得很好,下面是SQL代码 set serveroutput on declare a number; b varchar2(1); c varchar2(200); begin RETPK002.Generate_contract(4567120000100008,1,null,1200,null,100,null,0,0,0,6,a,b,c); dbms_output.

我在Oracle内部调用一个存储过程,它有11个输入和3个输出,在Oracle SQL developer内部,它工作得很好,下面是SQL代码

set serveroutput on
declare

a number;
b varchar2(1);
c varchar2(200);

begin

RETPK002.Generate_contract(4567120000100008,1,null,1200,null,100,null,0,0,0,6,a,b,c);

dbms_output.put_line(' num contract '||a);
dbms_output.put_line(' num contract '||b);
dbms_output.put_line(' num contract '||c);
end;
输出为

 num contract 223
 num contract True
 num contract Contrato Processado Com Sucesso
但是当我尝试在hibernate中运行相同的逻辑时,查询现在正在工作,但我无法接收任何输出
下面是DAO类内部的Hibernate编码

            int a;
            String b;
            String c;
         Query query = getCurrentSession().createSQLQuery(
"CALL RETPK002.Generate_contract(4567120000100008,1,null,1200,null,100,null,0,0,0,6,:a,:b,:c)");

     query.setParameter("a", a);
     query.setParameter("b", b);
     query.setParameter("c", c);

     List result =query.list();
           System.out.println("Value of a " + a);
           System.out.println("value of b "+ b);
           System.out.println("value of c " + c);

如果有人知道这一点,请帮助我,谢谢。

检查这是否有帮助bro我使用session尝试过,但对我无效显示错误org.hibernate.exception.sqlgrammareexception:cannotexecutement在我的情况下,我有三个输出,我认为产生了问题…@Madhusudana Reddy Sunnapu bro现在查询正在工作,但如何我可以接收输出吗?当我试图打印输出变量时,它显示为null。如果您有任何想法,请帮助我,Thnxxx不确定您使用的是哪个版本的hibernate,但是如果您使用的是较新的版本(我认为>4.2/4.1),hibernate对使用
会话调用存储过程提供了一流的支持。createStoredProcedureCall(…)
。有了它,我们可以用
ProcedureCall.registerParameter(…)
注册IN/OUT/INOUT参数。这看起来是一个更好更干净的方法。