2017-04-06 36 views
1

我有一个select语句返回相同数据类型(VARCHAR)的值列表。结果是1到6行之间的任何地方。我使用queryForList()并将响应存储在List对象中。执行时出现错误ibatis - 如何映射值列表

---原因: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; 
} 

回答

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与您查询一个HashMap参数

+1

非常感谢axelzaro – Techie