iBatis, не заполняющий объект, когда нет никаких найденных строк

Я выполняю хранимую процедуру, которая возвращает 2 курсора, и ни один из них не имеет данных. У меня есть следующее отображение xml:

<resultMap id="resultMap1" class="HashMap">
  <result property="firstName" columnIndex="2"/>
</resultMap>

<resultMap id="resultMap2" class="com.somePackage.MyBean">
  <result property="unitStreetName" column="street_name"/>
</resultMap>

<parameterMap id="parmmap" class="map">
  <parameter property="id" jdbcType="String" javaType="java.lang.String" mode="IN"/>
  <parameter property="Result0" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="resultMap1"/>
  <parameter property="Result1" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="resultMap2"/>
</parameterMap>

<procedure id="proc" parameterMap="parmmap">
    { call my_sp (?,?,?) }
</procedure>

Первый набор результатов помещается в HashMap... второй набор результатов помещается в a MyBean класс.

код в моем ДАО следует:

HashMap map = new HashMap()
map.put("id", "1234");
getSqlMapClientTemplate().queryForList("mymap.proc", map);
HashMap result1 = (HashMap)((List)parmMap.get("Result0")).get(0);
MyBean myObject = (MyBean)((List)parmMap.get("Result1")).get(0);//code fails here

в последней строке выше.. мои сбои кода. Это перестало работать, потому что второй курсор не имеет никаких строк, и вот почему ничто не помещается в список. Однако первый курсор ничего не возвращает также, но так как результаты помещаются в a HashMap список для первого курсора по крайней мере имеет HashMap возразите в нем..

Почему это различие? существует ли способ заставить iBatis поместить объект MyBean в списке, даже при отсутствии возвращенных строк? Или если я обрабатываю это в своем ДАО... Я не хочу обрабатывать его в ДАО, потому что у меня есть целый набор ДАО как они.

8
задан Omnipresent 10 November 2009 в 19:23
поделиться