मैं एक संग्रहीत प्रक्रिया चला रहा हूं जो 2 कर्सर देता है और उनमें से कोई भी डेटा नहीं है। मैं निम्नलिखित मानचित्रण एक्सएमएल है:iBatis कोई पॉप नहीं है जब कोई पंक्ति नहीं है
<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 में डाल जा रहा है ... दूसरा ResultSet एक 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
अंतिम पंक्ति में
above..my कोड विफल रहता है। यह विफल रहता है क्योंकि दूसरे कर्सर की कोई पंक्ति नहीं है और यही कारण है कि सूची में कुछ भी क्यों नहीं रखा जाता है। हालांकि, पहला कर्सर कुछ भी नहीं लौटाता है, लेकिन परिणाम HashMap
में डाले जा रहे हैं क्योंकि पहले कर्सर के लिए सूची में HashMap
ऑब्जेक्ट है ..
यह अंतर क्यों? क्या आईबेटिस सूची में माईबीन का ऑब्जेक्ट डालने का कोई तरीका है, भले ही कोई पंक्तियां वापस न हों? या मुझे इसे अपने डीएओ में संभालना चाहिए ... मैं इसे डीएओ में संभालने से बचना चाहता हूं क्योंकि मेरे पास डीएओ का पूरा समूह है।