2013-07-15 25 views
0

我無法從過程獲取值。它在表上執行插入操作,並且必須返回一個代碼。數據插入正確,但返回的代碼始終爲空。從MyBatis中的過程返回null

<parameterMap id="callParameters" type="Call" > 
    <parameter property="client" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="originalAnalyst" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="currentAnalyst" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="analystType" jdbcType="INTEGER" mode="IN"/> 
    <parameter property="category" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="product" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="process" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="problem" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="priority" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="status" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="serviceType" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="abstract" jdbcType="VARCHAR" mode="IN" /> 
    <parameter property="descript" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="nullField" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="returnField" jdbcType="VARCHAR" mode="OUT"/> 
    <parameter property="callNumber" jdbcType="VARCHAR" mode="OUT" /> 
    <parameter property="currentDate" jdbcType="TIMESTAMP" mode="IN" /> 
    <parameter property="constant1" jdbcType="INTEGER" mode="IN"/> 
    <parameter property="constant0" jdbcType="INTEGER" mode="IN"/> 
</parameterMap> 
<select id="open-call" parameterMap="callParameters" resultType="Call" statementType="CALLABLE"> 
    {call ADMAHD30.spr_AutoReq(#{returnField},#{constant1},#{callNumber},#{currentDate},#{client},#{originalAnalyst},#{currentAnalyst},#{analystType},#{category},#{product},#{process},#{problem},#{nullField},#{priority},#{status},#{serviceType},#{abstract},#{descript},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{nullField},#{constant0})} 
</select> 

所有這些屬性都正確映射到我的對象中。有什麼不對?

+0

你正在使用哪個數據庫? –

+0

Oracle。我無法更改任何程序或表格。他們來自另一個應用程序。 – nataliaoliveira

+0

'returnField'不作爲過程的任何參數傳遞。我猜一個'nullFields'應該可能是'returnField'而不是? – andersschuller

回答

0

我在myBatis上有些生疏,但是如果你期待String返回,爲什麼不是resultType「java.lang.String」?

編輯:怎麼樣用一個resultMap,而不是與resultType(假設SP已指定一個名稱爲回報PARAMS):

<resultMap id="CallResultMap" type="com...Call"> 
     <result property="callNumber" column="callNumberCol"/> 
     <result property="returnField" column="returnFieldCol"/> 
</resultMap> 

,然後在您的parameterMap的結果參數。

+0

調用過程時,我總是使用resultMap進行數據綁定,因爲過程中有2個參數OUT。其中之一是我需要的代碼。 – nataliaoliveira

+0

我已經試過了,但它仍然返回null。 – nataliaoliveira