Мы вызываем хранимую процедуру из спящего режима, используя следующий код:
ProcedureCall procedureCall = session.createStoredProcedureCall("StoredProcedureName", CustomEntity.class);
procedureCall.registerParameter("ParameterName1",String.class,ParameterMode.IN);
procedureCall.getParameterRegistration("ParameterName1")
.bindValue("Value1");
procedureCall.registerParameter("ParameterName2",String.class,ParameterMode.IN);
procedureCall.getParameterRegistration("ParameterName2")
.bindValue("Value2");
Здесь ожидается, что он должен сопоставлять параметры со значениями по имени.
Но похоже, что он отображает значения последовательно.
Потому что, если мы поставим условие, что если «значение» пусто, пропустите параметр регистра для этого значения. Таким образом, если мы пропустим какой-либо параметр между ними, он сопоставит значения своего следующего зарегистрированного параметра с этим пропущенным параметром.
Ex:
if (!value1.equals(""))
{
procedureCall.registerParameter("ParameterName1",String.class,ParameterMode.IN);
procedureCall.getParameterRegistration("ParameterName1")
.bindValue("Value1");
}
(это означает, что если мы получим «value1» пустым, мы пропустим регистрацию этого параметра, но в этом случае он будет отображать «value2» в «имя_параметра1")
Как этого можно избежать?
Заранее спасибо!