Я использую iBATIS для вызова хранимой процедуры на сервере MSSQL, входными параметрами являются свойства POJO, которые помещаются на карту:
Map<String, Object> saveMap = new HashMap<String, Object>();
saveMap.put("obj", myArticle);
update("save", saveMap);
Все параметры заданы правильно в качестве входных данных процедуры, поэтому ничего неправильного там нет. Но один из параметров - это выходной параметр, и я ожидал, что он будет возвращен к POJO, но вместо одного дополнительного отображения "obj.new"=false
будет помещена карта iBATIS.
Здесь приведен упрощенный вариант отображения основной идеи:
<procedure id="save">
{<include refid="Core.returned_value" />
CALL SPRC_ARTICLE_NAME_SAVE (
<include refid = "Core.common_fields" />
@pArticle_id = #obj.art_id#
, @pArtname = #obj.artname#
, @pNewArticleName_flg = #obj.new,mode=INOUT#
)}
</procedure>
После вызова процедуры у меня есть два сопоставления в Map, переданные iBATIS:
-
"obj"=POJO
-
"obj.new"=false
Теперь я вижу, что документация iBatis говорит: "При выполнении хранимых процедур iBATIS создаст объекты для параметров OUTPUT", поэтому имеет смысл. Но мой вопрос в том, есть ли способ проинструктировать iBATIS вернуть логическое значение POJO после вызова процедуры? Я скорее не делаю дополнительной работы по извлечению ценности из карты и не привяжу ее к POJO самому себе.
//Uhlén