我试图使用命名参数而不是位置参数,使用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() );
它只是将参数绑定为有序参数。
我有什么遗失的东西,或者现在这件事刚刚破裂了吗?