Je suis en train d'exécuter une procédure stockée qui renvoie 2 curseurs et aucun d'entre eux n'a de données. Je le xml mapping suivant:iBatis ne remplit pas l'objet lorsqu'il n'y a aucune ligne trouvée
<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>
Le premier jeu de résultat est mis dans une HashMap ... deuxième resultSet est mis dans une classe MyBean
.
dans mon OAC suit:
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
dans la dernière ligne above..my échoue code. Il échoue parce que le deuxième curseur n'a pas de lignes et c'est pourquoi rien n'est mis dans la liste. Cependant, le premier curseur ne retourne rien aussi mais comme les résultats sont mis dans une HashMap
la liste du premier curseur au moins a HashMap
objet à l'intérieur ..
Pourquoi cette différence? Y at-il un moyen de rendre iBatis mettre un objet de MyBean dans la liste même s'il n'y a pas de lignes retournées? Ou devrais-je gérer cela dans mon DAO ... Je veux éviter de le traiter dans le DAO parce que j'ai tout un tas de DAO comme ceux-ci.