2017-04-06 77 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