我正在使用IBATIS 2.0,就像我给出的那样。 我试图让我的应用程序读取一组哈希图,但是它给了我:
Exception: java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.Collection
这是我的结果图:
<resultMap id="personnelDtlHM" class="java.util.HashMap">
<result property="idNo" column="ID"/>
<result property="fullName" column="FULL_NAME"/>
<result property="dteBirth" column="DTE_BIRTH"/>
<result property="addr" column="ADDR"/>
<result property="homeTelNo" column="HOME_TEL_NO"/>
<result property="mobileNo" column="HANDPHONE_NO"/>
<result property="emailAddr" column="EMAIL_ADDR"/>
</resultMap>
这是我的疑问:
<select id="getMultiplePersInfo" resultMap="personnelDtlHM" parameterClass="list">
SELECT
P.ID,
P.FULL_NAME,
P.DTE_BIRTH,
P.ADDR,
P.HOME_TEL_NO,
P.HANDPHONE_NO,
P.EMAIL_ADDR
FROM
PERS_TABLE P
WHERE
P.ID IN
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
这是我的java代码:
List<String> tmpNRICs = new ArrayList<String>();
if (records != null && records.size() > 0) {
String tempId = "A1234567D";
tmpIDs.add(tempId);
}
Collection<HashMap> returnMapRecords = null;
SqlMapClient sqlMap = null;
String idList = "";
returnMapRecords = (Collection<HashMap>) sqlMap.queryForObject("getMultiplePersInfo", tmpIDs);
System.out.println(returnMapRecords.size());
正确读取结果,正确映射了hashmap,但我没有得到数据的行和行。
当我在tmpIDs
中使用多个ID号进行测试时,收到错误:
java.sql.SQLException: Error: executeQueryForObject returned too many results.
我想知道这是否是一件非常基本的事情,因为我不相信这么强大的数据映射器不能映射多行。然而,我无法找到任何答案,或者我无法理解我发现的事情。
我正在尝试检索数据库中已有的数据行:
ID | FULL_NAME | DTE_BIRTH | ADDR | HOME_TEL_NO | HANDPHONE_NO | EMAIL_ADDR
A1234567D| TESTNAME | 12-12-2000| TEST | 1233465 | 12345678 | test@com.com
A2234567D| TESTNAME2 | 12-12-1999| TEST | 1234567 | 12345678 | test2@com.com
etc.
提前感谢您提供任何帮助和建议。
答案 0 :(得分:1)
Nvm我明白了。
应该使用sqlMap.queryForList()
代替sqlMap.QueryForObject()