Java 纯SQL vs Hibernate(如何在Hibernate中接收输出?)
我在Oracle内部调用一个存储过程,它有11个输入和3个输出,在Oracle SQL developer内部,它工作得很好,下面是SQL代码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.
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参数。这看起来是一个更好更干净的方法。