Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate调用sql server存储过程在'@P0';_Java_Sql_Sql Server_Hibernate_Stored Procedures - Fatal编程技术网

Java Hibernate调用sql server存储过程在'@P0';

Java Hibernate调用sql server存储过程在'@P0';,java,sql,sql-server,hibernate,stored-procedures,Java,Sql,Sql Server,Hibernate,Stored Procedures,sql server存储过程如下所示: CREATE PROCEDURE SelectStaff @rankabbr varchar(14), @sex varchar(1) AS SELECT * FROM staff WHERE rankabbr = @rankabbr AND sex = @sex 我可以通过以下方式在SSMS中成功运行它 exec SelectStaff 'AEO', 'M'; 但在eclipse中,我使用hibernate调用此存储过程,如下所示: Session

sql server存储过程如下所示:

CREATE PROCEDURE SelectStaff @rankabbr varchar(14), @sex varchar(1)
AS
SELECT * FROM staff WHERE rankabbr = @rankabbr AND sex = @sex
我可以通过以下方式在SSMS中成功运行它

exec SelectStaff  'AEO', 'M';
但在eclipse中,我使用hibernate调用此存储过程,如下所示:

Session session2 = HibernateUtil.getCurrentSession();
org.hibernate.Query query = session2.createSQLQuery(" call SelectStaff(:rankabbr, :sex) ")                    
          .setParameter("rankabbr","AEO")
          .setParameter("sex", "M");
List<Object[]> results =query.list();
但错误是一样的


我试图用SQLServer2012Dialect替换SQLServerDialect,但出现了相同的错误。

我发现以下代码正常工作:

Session session2 = HibernateUtil.getCurrentSession();
ProcedureCall call = session2.createStoredProcedureCall("SelectStaff");
call.registerParameter( 1, String.class, ParameterMode.IN).bindValue("AEO");
call.registerParameter( 2, String.class, ParameterMode.IN).bindValue("M");
Output output = call.getOutputs().getCurrent();
List<Object[]> results;
if (output.isResultSet()) {
     results = ( (ResultSetOutput) output ).getResultList();
     for (Object[] row:results) {
         // ......
     }
}
会话会话2=HibernateUtil.getCurrentSession(); ProcedureCall call=session2.createStoredProcedureCall(“SelectStaff”); call.registerParameter(1,String.class,ParameterMode.IN).bindValue(“AEO”); call.registerParameter(2,String.class,ParameterMode.IN).bindValue(“M”); 输出=调用.getOutputs().getCurrent(); 列出结果; if(output.isResultSet()){ 结果=((ResultSetToutput)输出).getResultList(); 对于(对象[]行:结果){ // ...... } }
您使用的hibernate版本是什么?hibernate core 5.0.6
Session session2 = HibernateUtil.getCurrentSession();
ProcedureCall call = session2.createStoredProcedureCall("SelectStaff");
call.registerParameter( 1, String.class, ParameterMode.IN).bindValue("AEO");
call.registerParameter( 2, String.class, ParameterMode.IN).bindValue("M");
Output output = call.getOutputs().getCurrent();
List<Object[]> results;
if (output.isResultSet()) {
     results = ( (ResultSetOutput) output ).getResultList();
     for (Object[] row:results) {
         // ......
     }
}