Java 使用命名参数从Hibernate调用存储过程

Java 使用命名参数从Hibernate调用存储过程,java,hibernate,stored-procedures,Java,Hibernate,Stored Procedures,我试图使用org.Hibernate.procedure.ProcedureCall接口,使用命名参数而不是位置参数,从Hibernate 4.3.5.Final调用MS SQL Server存储过程。我有这样的想法: ProcedureCall call = session.createStoredProcedureCall(procedureName); call.registerParameter("parameter1Name", Integer.class, ParameterMode

我试图使用org.Hibernate.procedure.ProcedureCall接口,使用命名参数而不是位置参数,从Hibernate 4.3.5.Final调用MS SQL Server存储过程。我有这样的想法:

ProcedureCall call = session.createStoredProcedureCall(procedureName);
call.registerParameter("parameter1Name", Integer.class, ParameterMode.IN).bindValue(1);
call.registerParameter("parameter2Name", Integer.class, ParameterMode.IN).bindValue(2);
call.getOutputs();
但我最终得出的结论是:

{call procedure_name (1, 2)};
而不是:

{call procedure_name (@parameter1Name = 1, @parameter2Name = 2)};
请注意,没有参数名称,参数的顺序与指定的顺序完全一致。
NamedParameterRegistration继承自AbstractParameterRegistrationImpl,不重写prepare()。对于模式为IN或INOUT的参数,它调用

typeToUse.nullSafeSet( statement, bind.getValue(), startIndex, session() );
它只是将参数绑定为有序参数


是否有我遗漏的东西,或者这是刚刚损坏的?

您面临的错误是什么?发布完整的stacktrace。我没有得到任何错误,它只是忽略了一个事实,即参数是命名的,并将它们作为位置参数插入。看我的例子,我将添加它应该执行的内容。