我有一个select语句,它返回相同数据类型(VARCHAR)的值列表。结果是1到6行之间的任何位置。我使用queryForList()
并将响应存储在List对象中。执行时我收到错误
---原因:com.ibatis.sqlmap.client.SqlMapException:找不到类型处理程序来映射属性' statusList'到列' null'。 一种或两种类型或类型的组合不是 支撑。
SQL查询在SQL窗口中执行时返回3行。你能帮忙吗?提前致谢
<resultMap id="retrieveStatusResult"
class="ie.org.model.ResponseBO">
<result property="statusList" columnIndex="1" />
</resultMap>
<select id="retrieveStatus" parameterClass="ie.org.model.RequestBO"
resultMap="retrieveStatusResult">
SELECT (SELECT DESCRIPTION
FROM TABLEA LCD
WHERE LCD.CODE_DETAIL = QPL.STATUS)
FROM TABLEB QPL
WHERE QPL.QUOTE=#Quote#
AND VERSION IN (SELECT VERSION FROM TABLEB WHERE QUOTE = #Quote#)
</select>
ResponseBO.java
private List statusList = new ArrayList();
public List getStatusList() {
return statusList;
}
public void setStatusList(List statusList) {
this.statusList = statusList;
}
答案 0 :(得分:1)
您没有正确映射结果/您的错误。
使用queryForList()
时,您尝试创建resultMap中包含的对象列表。在您的BO中,您尝试从查询答案的每一行创建一个列表。
你应该使用这样的BO:
private String status;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
具有适合您查询答案的类型。
要使用查询结果,请按以下方式调用您的语句:
List<ResponseBO> listStatus = new ArrayList<ResponseBO>();
listStatus = (List<ResponseBO>)queryForList("retrieveStatus",properys);
propertys
是包含查询参数的哈希映射