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 に配置されています...2 番目の結果セットはMyBean
クラスに配置されています。
私のDAOのコードは次のとおりです。
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
上記の最後の行で..私のコードは失敗します。2番目のカーソルに行がなく、リストに何も入れられないため失敗します。HashMap
ただし、最初のカーソルも何も返しませんが、結果が最初のカーソルのリストに入れられているため、少なくともHashMap
その中にオブジェクトがあります..
この違いはなぜですか?行が返されない場合でも、iBatis に MyBean のオブジェクトをリスト内に配置させる方法はありますか? それとも、DAO でこれを処理する必要がありますか... このような DAO がたくさんあるので、DAO で処理することは避けたいと思います。