2013-01-15 28 views
1

我創建一個ibatis的quesry,其結果應該是:獲取地圖<字符串的CustomData>從iBATIS的

Map<String,CustomData> 

我ibatis的查詢:

<resultMap id="dataMap" class="java.util.HashMap"> 
    <result property="key" column="UUID"/> 
    <result property="value" resultMap ="customData"/> 
</resultMap> 

<resultMap id="customData" class="com.model.CustomData"> 
    <result property="x" column="X_COL"/> 

</resultMap> 

<select id="fetchData" 
     resultClass="java.util.HashMap" 
     parameterClass="java.util.Map"> 
    SELECT 
    UUID AS UUID, 
    (CASE 
    WHEN SOME_DATA IS NOT NULL THEN 'TRUE'   
    END) AS X_COL 
    FROM TABLE 
</select> 

的CustomData是一個Java類:

public class CustomData{ 
private String x; 

//Getters & Setters 

} 

我期望在Java上得到以下結果:

Map<String,CustomData> 

但是我得到以下幾點:

Map<String,String> 

任何想法!

+0

您能否提供執行您的請求並檢索Map對象的代碼? – zoom

+0

Map result = (Map )getSqlMapClientTemplate()。queryForObject(「namespace」+「.fetchData」); – Echo

+0

請在我的問題中找到我的更新代碼。 – Echo

回答

3

你應該嘗試通過resultMap"dataMap"值這樣更換resultClass屬性,在select標籤:

<select id="fetchData" 
    resultMap="dataMap" 
    parameterClass="java.util.Map"> 
<!-- your query --> 
</select> 

在你的情況queryForList方法嘗試實例化一個java.util.HashMap,而不是這一點,應該使用上面定義的映射dataMap

+0

我收到以下異常:導致:com.ibatis.common.jdbc.exception.NestedSQLException: ---錯誤發生在/sqlmap/ibatisData.xml中。 ---應用結果地圖時發生錯誤。 ---檢查namespace.dataMap。 ---檢查'值'屬性的結果映射。 ---原因:com.ibatis.sqlmap.client.SqlMapException:在此SqlMap中沒有名爲customData的結果映射。 – Echo

+0

我解決了我的問題: Echo

+0

我剛剛在我引用的結果地圖之前添加了sql名稱空間。 – Echo

相關問題